के साथ आईओ क्रियाओं का परीक्षण करना क्या कोई मुझे मोनाडिक क्विक चेक का उपयोग करके आईओ कार्यों का परीक्षण करने का एक संक्षिप्त उदाहरण दे सकता है?मोनाडिक क्विक चेक
उत्तर
Test.QuickCheck.Monadic मॉड्यूल आपको IO
में चलने वाली चीज़ों को भी मोनाडिक कोड का परीक्षण करने देता है।
एक monadic विशेषता परीक्षण प्रकार PropertyM m a
, जहां m
इकाई परीक्षण में चलता है और a
अंततः ध्यान नहीं दिया जाता है की है। PropertyM IO a
के मामले में, आप monadicIO
का उपयोग कर मोनैडिक टेस्ट को Property
पर परिवर्तित करें; अन्य सभी मोनैड के लिए, आप इसके बजाय monadic
का उपयोग करते हैं (जो मोनैड चलाने के लिए एक फ़ंक्शन लेता है, कुछ IO
नहीं है)।
एक monadic परीक्षण में, मानदंड से return
एड मान को अनदेखा किया जाता है। अभिव्यक्ति की जांच करने के लिए, assert
का उपयोग करें; assert
एक गलत मान में परीक्षण परीक्षण विफल हो जाएगा। परीक्षण किए गए मोनैड में कोड निष्पादित करने के लिए run
का उपयोग करें।
आपके निपटान में अन्य monadic कार्रवाईएं हैं। उदाहरण के लिए, pick
Gen a
से नए परीक्षण इनपुट उत्पन्न करेगा, और pre
परीक्षण पूर्व शर्त जांच करेगा। ये उपयोगी हैं अगर परीक्षण इनपुट या पूर्व शर्त स्वयं परीक्षण किए जा रहे मानकों के माध्यम से गणना मूल्यों पर निर्भर करती हैं, इस मामले में इनपुट उत्पन्न करने या प्रीकॉन्शन की जांच करने का सामान्य तरीका काम नहीं करेगा।
यहां कुछ IO
कोड का परीक्षण करने का एक उदाहरण दिया गया है: हम जांचते हैं कि अस्थायी फ़ाइल में कुछ लिखने के बाद, हम उसी डेटा को वापस पढ़ सकते हैं। प्रदर्शन उद्देश्यों के लिए, हम पूर्व शर्त लगाएंगे कि हम फ़ाइल में कम से कम एक बाइट लिखते हैं। दो परीक्षण गुण एक ही काम करते हैं; एक pick
और pre
अनावश्यक रूप से उपयोग करता है जबकि दूसरा नहीं करता है।
import System.Directory (removeFile)
import System.IO (hGetContents, hPutStr, hSeek, openBinaryTempFile, SeekMode (..))
import Test.QuickCheck (arbitrary, Property, quickCheck, (==>))
import Test.QuickCheck.Monadic (assert, monadicIO, pick, pre, run)
-- Demonstrating pick and pre as well:
prop_writeThenRead :: Property
prop_writeThenRead = monadicIO $ do writtenData <- pick arbitrary
pre $ not (null writtenData)
readData <- run $ writeThenRead writtenData
assert $ writtenData == readData
-- A more idiomatic way to write the above:
prop_writeThenRead2 :: [Char] -> Property
prop_writeThenRead2 writtenData = not (null writtenData) ==> monadicIO test
where test = do readData <- run $ writeThenRead writtenData
assert $ writtenData == readData
writeThenRead :: [Char] -> IO [Char]
writeThenRead output = do (path, h) <- openBinaryTempFile "/tmp" "quickcheck.tmp"
removeFile path
hPutStr h output
hSeek h AbsoluteSeek 0
hGetContents h
main :: IO()
main = do quickCheck prop_writeThenRead
quickCheck prop_writeThenRead2
मोनैडिक कोड परीक्षण के लिए मानक संदर्भ "Testing Monadic Code with QuickCheck" है। यह आईओ जैसे मोनैड के संदर्भ में परीक्षण के विभिन्न तरीकों को दिखाता है।
लेकिन आपको वास्तव में एक और ठोस सवाल पोस्ट करने पर विचार करना चाहिए कि आप क्या परीक्षण करना चाहते हैं।
लिंक आजकल नीचे है। –
कोएन स्पष्ट रूप से अपने मुखपृष्ठ को पुनर्गठित कर रहा है। इसके बजाय निम्नलिखित यूआरएल आज़माएं: [www.cse.chalmers.se/~rjmh/Papers/QuickCheckST.ps ](http://www.cse.chalmers.se/~rjmh/Papers/QuickCheckST.ps) – svenningsson
- 1. क्विक चेक
- 2. क्विक चेक
- 3. हास्केल - क्विक चेक
- 4. हास्केल के क्विक चेक
- 5. वर्कबैक क्विक चेक 2 में चेक करें?
- 6. क्विक चेक 2 बैच प्रोसेसिंग
- 7. क्विक चेक 1 से क्विक चेक 2 में कनवर्ट करने के लिए "कुकबुक"?
- 8. निरंतर एकीकरण के साथ हनीट/क्विक चेक
- 9. क्विक चेक गुणों में उपयोग किए गए शो-इन फ़ंक्शन
- 10. बाइटस्ट्रिंग का उपयोग कर हास्केल क्विक चेक 2?
- 11. क्विक चेक से मुझे अच्छे (छोटे) सिंक कैसे मिलते हैं?
- 12. क्विक चेक उदाहरण कैबेल पैकेज में कहां से संबंधित हैं?
- 13. सशर्त में मोनाडिक अभिव्यक्तियां - जीएचसी संकलन, कैबल
- 14. क्विक सिलेक्ट एल्गोरिदम
- 15. क्विक एलएस कमांड
- 16. क्विक 'गंदे दृढ़ता
- 17. मैं क्विक चेक को सभी अपवादों को पकड़ने से कैसे रोक सकता हूं?
- 18. हास्केल क्विक चेक सर्वोत्तम प्रथाओं (विशेष रूप से परीक्षण प्रकार कक्षाओं)
- 19. हास्केल: क्विक चेक के साथ एक (प्रतिक्रियाशील) एफएसएम का परीक्षण कैसे करें?
- 20. मैं क्विक चेक का उपयोग कर उच्च-आदेश फ़ंक्शन का परीक्षण कैसे कर सकता हूं?
- 21. क्विक चेक के साथ एक असफल परीक्षण संपत्ति का कारण कैसे प्रदर्शित करें?
- 22. चेक = "चेक" बनाम चेक = सही
- 23. एंड्रॉइड क्विक एक्शन यूआई पैटर्न
- 24. ggplot2: क्विक हीटमैप प्लॉटिंग, रीशेप?
- 25. चेक
- 26. Xbox 360 अनुप्रयोग विकास पर क्विक स्टार्ट
- 27. खाली क्विक करने योग्य घोषित करना?
- 28. पैरामीटर के लिए केवल वैध सूची इंडेक्स जेनरेट करने के लिए क्विक चेक को कैसे बताना है?
- 29. .attr ('चेक', 'चेक') काम नहीं करता
- 30. .prop ('चेक', झूठा) या .removeAttr ('चेक')?
आप जो परीक्षण करना चाहते हैं उसका एक उदाहरण देते हुए, सवाल बेहतर होगा। – Egon