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

104

105

106

107

108

109

110

111

# Copyright (C) 2011  Internet Systems Consortium. 

# 

# Permission to use, copy, modify, and distribute this software for any 

# purpose with or without fee is hereby granted, provided that the above 

# copyright notice and this permission notice appear in all copies. 

# 

# THE SOFTWARE IS PROVIDED "AS IS" AND INTERNET SYSTEMS CONSORTIUM 

# DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL 

# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL 

# INTERNET SYSTEMS CONSORTIUM BE LIABLE FOR ANY SPECIAL, DIRECT, 

# INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING 

# FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, 

# NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION 

# WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. 

 

# 

# Tests for the rrttl part of the pydnspp module 

# 

 

import unittest 

import os 

from pydnspp import * 

 

class SerialTest(unittest.TestCase): 

    def setUp(self): 

        self.one = Serial(1) 

        self.one_2 = Serial(1) 

        self.two = Serial(2) 

        self.date_zero = Serial(1980120100) 

        self.date_one = Serial(1980120101) 

        self.zero = Serial(0) 

        self.highest = Serial(4294967295) 

        self.number_low = Serial(12345) 

        self.number_medium = Serial(2000000000) 

        self.number_high = Serial(4000000000) 

 

    def test_init(self): 

        self.assertRaises(ValueError, Serial, -1) 

        self.assertRaises(ValueError, Serial, 4294967296) 

        self.assertRaises(ValueError, Serial, 4294967297) 

        self.assertRaises(ValueError, Serial, 100000000000) 

 

    def test_get_value(self): 

        self.assertEqual(1, self.one.get_value()) 

        self.assertNotEqual(2, self.one_2.get_value()) 

        self.assertEqual(2, self.two.get_value()) 

        self.assertEqual(1980120100, self.date_zero.get_value()) 

        self.assertEqual(1980120101, self.date_one.get_value()) 

        self.assertEqual(0, self.zero.get_value()) 

        self.assertEqual(4294967295, self.highest.get_value()) 

        self.assertEqual(12345, self.number_low.get_value()) 

        self.assertEqual(2000000000, self.number_medium.get_value()) 

        self.assertEqual(4000000000, self.number_high.get_value()) 

 

    def test_str(self): 

        self.assertEqual('1', str(self.one)) 

        self.assertNotEqual('2', str(self.one_2)) 

        self.assertEqual('2', str(self.two)) 

        self.assertEqual('1980120100', str(self.date_zero)) 

        self.assertEqual('1980120101', str(self.date_one)) 

        self.assertEqual('0', str(self.zero)) 

        self.assertEqual('4294967295', str(self.highest)) 

        self.assertEqual('12345', str(self.number_low)) 

        self.assertEqual('2000000000', str(self.number_medium)) 

        self.assertEqual('4000000000', str(self.number_high)) 

 

    def test_equals(self): 

        self.assertEqual(self.one, self.one) 

        self.assertEqual(self.one, self.one_2) 

        self.assertNotEqual(self.one, self.two) 

        self.assertNotEqual(self.two, self.one) 

        self.assertEqual(Serial(12345), self.number_low) 

        self.assertNotEqual(Serial(12346), self.number_low) 

 

    def test_compare(self): 

        # These should be true/false even without serial arithmetic 

        self.assertLessEqual(self.one, self.one) 

        self.assertLessEqual(self.one, self.one_2) 

        self.assertLess(self.one, self.two) 

        self.assertLessEqual(self.one, self.one) 

        self.assertLessEqual(self.one, self.two) 

        self.assertGreater(self.two, self.one) 

        self.assertGreaterEqual(self.two, self.two) 

        self.assertGreaterEqual(self.two, self.one) 

        self.assertLess(self.one, self.number_low) 

        self.assertLess(self.number_low, self.number_medium) 

        self.assertLess(self.number_medium, self.number_high) 

 

        # These should 'wrap' 

        self.assertGreater(self.zero, self.highest) 

        self.assertLess(self.highest, self.one) 

        self.assertLess(self.number_high, self.number_low) 

 

    def test_addition(self): 

        self.assertEqual(self.two, self.one + self.one) 

        self.assertEqual(self.two, self.one + self.one_2) 

        self.assertEqual(self.highest, self.highest + self.zero) 

        self.assertEqual(self.zero, self.highest + self.one) 

        self.assertEqual(self.one, self.highest + self.two) 

        self.assertEqual(self.one, self.highest + self.one + self.one) 

        self.assertEqual(self.one + 100, self.highest + 102) 

        self.assertEqual(100 + self.one, self.highest + 102) 

        self.assertEqual(self.zero + 2147483645, self.highest + 2147483646) 

 

        # using lambda so the error doesn't get thrown on initial evaluation 

        self.assertRaises(TypeError, lambda: self.zero + "bad") 

        self.assertRaises(TypeError, lambda: self.zero + None) 

        self.assertRaises(TypeError, lambda: "bad" + self.zero) 

 

exitif __name__ == '__main__': 

    unittest.main()