2013-10-12 9 views
7

मैं आमतौर पर कार्य करता हूं और उनके लिए यूनिट परीक्षण लिखता हूं। लेकिन मैक्रोज़ के लिए जो कोड ट्रांसफॉर्मेशन करते हैं, कैसे मैकिंग अपेक्षित और वास्तविक मूल्य के तर्क को लागू करेगा?क्लोजर में मैक्रोज़ का परीक्षण करने की कोई रणनीति है?

क्योंकि मैक्रोज़ में इनपुट कोड होगा और आउटपुट कोड भी होगा। यह परीक्षण करने के लिए कुछ रणनीति के साथ आने में सक्षम होने के लिए मेरे लिए इतना गतिशील लगता है।

या मैक्रो के लिए नमूना इनपुट का उपयोग कर सकता हूं, और अभिव्यक्ति को मैक्रोएक्सपैंड -1 में पास कर सकता हूं और आउटपुट से अपेक्षित मिलान कर सकता हूं?

+3

मैंने यहां एक बहुत ही समान प्रश्न का उत्तर दिया है: http://stackoverflow.com/questions/16329109/is-there-a-tool-function-that-can-be-used-to-compare-patterns-macro -फॉर्म/16329164 # 16329164 - उम्मीद है कि यह मदद करता है। – leonardoborges

उत्तर

1

मुझे लगता है कि दोनों उदाहरणों में योग्यता है।

छोटे प्रतिस्थापन-शैली मैक्रोज़ के लिए आप कुछ उदाहरणों के विस्तारित रूप का परीक्षण कर सकते हैं। मिडजे जैसे टेस्टिंग फ्रेमवर्क उसमें मदद करते हैं, इसमें an =expands-to=> checker है।

लेकिन अधिक जटिल उदाहरणों के लिए, विस्तारित रूप अक्सर विकास के दौरान छोटे तरीकों से बदल रहा है जो कभी भी विस्तारित रूप को बहुत भंगुर नहीं देखता है। इन उदाहरणों में मैं आम तौर पर मैक्रो के विशिष्ट उपयोगों के आसपास परीक्षण मामलों का निर्माण करता हूं।

0

यह:

या मैं मैक्रो के लिए एक नमूना इनपुट का उपयोग कर सकते हैं और macroexpand -1 को अभिव्यक्ति गुजरती हैं और उम्मीद से एक के साथ उत्पादन से मेल खाते हैं?

आपको जिस आउटपुट की अपेक्षा है, उसे लिखकर आपको अपना मैक्रो लिखना शुरू करना चाहिए, इसलिए आपके पास पहले से ही एक उदाहरण होना चाहिए।

आप मैक्रो से बाहर आने वाले कोड का भी परीक्षण कर सकते हैं और यह सत्यापित कर सकते हैं कि यह भी अपेक्षित कार्य कर रहा है, जैसा कि आप किसी फ़ंक्शन का परीक्षण करेंगे।

संबंधित मुद्दे