Hot-keys on this page

r m x p   toggle line displays

j k   next/prev highlighted chunk

0   (zero) top of page

1   (one) first highlighted chunk

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81

82

83

84

85

86

87

88

89

90

91

92

93

94

95

96

97

98

99

100

101

102

103

""" Test the cogapp.whiteutils module. 

    http://nedbatchelder.com/code/cog 

     

    Copyright 2004-2012, Ned Batchelder. 

""" 

 

from __future__ import absolute_import 

import unittest 

from .whiteutils import * 

 

class WhitePrefixTests(unittest.TestCase): 

    """ Test cases for cogapp.whiteutils. 

    """ 

 

    def testSingleLine(self): 

        self.assertEqual(whitePrefix(['']), '') 

        self.assertEqual(whitePrefix([' ']), '') 

        self.assertEqual(whitePrefix(['x']), '') 

        self.assertEqual(whitePrefix([' x']), ' ') 

        self.assertEqual(whitePrefix(['\tx']), '\t') 

        self.assertEqual(whitePrefix(['  x']), '  ') 

        self.assertEqual(whitePrefix([' \t \tx   ']), ' \t \t') 

 

    def testMultiLine(self): 

        self.assertEqual(whitePrefix(['  x','  x','  x']), '  ') 

        self.assertEqual(whitePrefix(['   y','  y',' y']), ' ') 

        self.assertEqual(whitePrefix([' y','  y','   y']), ' ') 

 

    def testBlankLinesAreIgnored(self): 

        self.assertEqual(whitePrefix(['  x','  x','','  x']), '  ') 

        self.assertEqual(whitePrefix(['','  x','  x','  x']), '  ') 

        self.assertEqual(whitePrefix(['  x','  x','  x','']), '  ') 

        self.assertEqual(whitePrefix(['  x','  x','          ','  x']), '  ') 

 

    def testTabCharacters(self): 

        self.assertEqual(whitePrefix(['\timport sys', '', '\tprint sys.argv']), '\t') 

 

    def testDecreasingLengths(self): 

        self.assertEqual(whitePrefix(['   x','  x',' x']), ' ') 

        self.assertEqual(whitePrefix(['     x',' x',' x']), ' ') 

 

class ReindentBlockTests(unittest.TestCase): 

    """ Test cases for cogapp.reindentBlock. 

    """ 

 

    def testNonTermLine(self): 

        self.assertEqual(reindentBlock(''), '') 

        self.assertEqual(reindentBlock('x'), 'x') 

        self.assertEqual(reindentBlock(' x'), 'x') 

        self.assertEqual(reindentBlock('  x'), 'x') 

        self.assertEqual(reindentBlock('\tx'), 'x') 

        self.assertEqual(reindentBlock('x', ' '), ' x') 

        self.assertEqual(reindentBlock('x', '\t'), '\tx') 

        self.assertEqual(reindentBlock(' x', ' '), ' x') 

        self.assertEqual(reindentBlock(' x', '\t'), '\tx') 

        self.assertEqual(reindentBlock(' x', '  '), '  x') 

 

    def testSingleLine(self): 

        self.assertEqual(reindentBlock('\n'), '\n') 

        self.assertEqual(reindentBlock('x\n'), 'x\n') 

        self.assertEqual(reindentBlock(' x\n'), 'x\n') 

        self.assertEqual(reindentBlock('  x\n'), 'x\n') 

        self.assertEqual(reindentBlock('\tx\n'), 'x\n') 

        self.assertEqual(reindentBlock('x\n', ' '), ' x\n') 

        self.assertEqual(reindentBlock('x\n', '\t'), '\tx\n') 

        self.assertEqual(reindentBlock(' x\n', ' '), ' x\n') 

        self.assertEqual(reindentBlock(' x\n', '\t'), '\tx\n') 

        self.assertEqual(reindentBlock(' x\n', '  '), '  x\n') 

 

    def testRealBlock(self): 

        self.assertEqual( 

            reindentBlock('\timport sys\n\n\tprint sys.argv\n'), 

            'import sys\n\nprint sys.argv\n' 

            ) 

 

class CommonPrefixTests(unittest.TestCase): 

    """ Test cases for cogapp.commonPrefix. 

    """ 

 

    def testDegenerateCases(self): 

        self.assertEqual(commonPrefix([]), '') 

        self.assertEqual(commonPrefix(['']), '') 

        self.assertEqual(commonPrefix(['','','','','']), '') 

        self.assertEqual(commonPrefix(['cat in the hat']), 'cat in the hat') 

 

    def testNoCommonPrefix(self): 

        self.assertEqual(commonPrefix(['a','b']), '') 

        self.assertEqual(commonPrefix(['a','b','c','d','e','f']), '') 

        self.assertEqual(commonPrefix(['a','a','a','a','a','x']), '') 

 

    def testUsualCases(self): 

        self.assertEqual(commonPrefix(['ab', 'ac']), 'a') 

        self.assertEqual(commonPrefix(['aab', 'aac']), 'aa') 

        self.assertEqual(commonPrefix(['aab', 'aab', 'aab', 'aac']), 'aa') 

 

    def testBlankLine(self): 

        self.assertEqual(commonPrefix(['abc', 'abx', '', 'aby']), '') 

 

    def testDecreasingLengths(self): 

        self.assertEqual(commonPrefix(['abcd', 'abc', 'ab']), 'ab') 

 

if __name__ == '__main__':      #pragma: no cover 

    unittest.main()