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

112

# Copyright (C) 2010  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 opcode part of the pydnspp module 

# 

 

import unittest 

from pydnspp import * 

 

class OpcodeTest(unittest.TestCase): 

    def test_init(self): 

        self.assertRaises(TypeError, Opcode, "wrong") 

        self.assertEqual(Rcode(0).get_code(), 0) 

        self.assertEqual(Rcode(Opcode.RESERVED15_CODE).get_code(), 15) 

        self.assertRaises(OverflowError, Opcode, 16) 

 

    def test_constants(self): 

        self.assertEqual(Opcode.QUERY_CODE, Opcode(0).get_code()) 

        self.assertEqual(Opcode.IQUERY_CODE, Opcode(1).get_code()) 

        self.assertEqual(Opcode.NOTIFY_CODE, Opcode(4).get_code()) 

        self.assertEqual(Opcode.UPDATE_CODE, Opcode(5).get_code()) 

        self.assertEqual(Opcode.RESERVED15_CODE, Opcode(15).get_code()) 

 

        self.assertEqual(Opcode.QUERY_CODE, Opcode.QUERY().get_code()) 

        self.assertEqual(Opcode.IQUERY_CODE, Opcode.IQUERY().get_code()) 

        self.assertEqual(Opcode.NOTIFY_CODE, Opcode.NOTIFY().get_code()) 

        self.assertEqual(Opcode.UPDATE_CODE, Opcode.UPDATE().get_code()) 

        self.assertEqual(Opcode.RESERVED15_CODE, Opcode.RESERVED15().get_code()) 

 

    def test_get_code(self): 

        self.assertEqual(0, Opcode.QUERY().get_code()) 

        self.assertEqual(1, Opcode.IQUERY().get_code()) 

        self.assertEqual(2, Opcode.STATUS().get_code()) 

        self.assertEqual(3, Opcode.RESERVED3().get_code()) 

        self.assertEqual(4, Opcode.NOTIFY().get_code()) 

        self.assertEqual(5, Opcode.UPDATE().get_code()) 

        self.assertEqual(6, Opcode.RESERVED6().get_code()) 

        self.assertEqual(7, Opcode.RESERVED7().get_code()) 

        self.assertEqual(8, Opcode.RESERVED8().get_code()) 

        self.assertEqual(9, Opcode.RESERVED9().get_code()) 

        self.assertEqual(10, Opcode.RESERVED10().get_code()) 

        self.assertEqual(11, Opcode.RESERVED11().get_code()) 

        self.assertEqual(12, Opcode.RESERVED12().get_code()) 

        self.assertEqual(13, Opcode.RESERVED13().get_code()) 

        self.assertEqual(14, Opcode.RESERVED14().get_code()) 

        self.assertEqual(15, Opcode.RESERVED15().get_code()) 

 

    def test_to_text(self): 

        self.assertEqual("QUERY", Opcode.QUERY().to_text()) 

        self.assertEqual("QUERY", str(Opcode.QUERY())) 

        self.assertEqual("IQUERY", Opcode.IQUERY().to_text()) 

        self.assertEqual("STATUS", Opcode.STATUS().to_text()) 

        self.assertEqual("RESERVED3", Opcode.RESERVED3().to_text()) 

        self.assertEqual("NOTIFY", Opcode.NOTIFY().to_text()) 

        self.assertEqual("UPDATE", Opcode.UPDATE().to_text()) 

        self.assertEqual("RESERVED6", Opcode.RESERVED6().to_text()) 

        self.assertEqual("RESERVED7", Opcode.RESERVED7().to_text()) 

        self.assertEqual("RESERVED8", Opcode.RESERVED8().to_text()) 

        self.assertEqual("RESERVED9", Opcode.RESERVED9().to_text()) 

        self.assertEqual("RESERVED10", Opcode.RESERVED10().to_text()) 

        self.assertEqual("RESERVED11", Opcode.RESERVED11().to_text()) 

        self.assertEqual("RESERVED12", Opcode.RESERVED12().to_text()) 

        self.assertEqual("RESERVED13", Opcode.RESERVED13().to_text()) 

        self.assertEqual("RESERVED14", Opcode.RESERVED14().to_text()) 

        self.assertEqual("RESERVED15", Opcode.RESERVED15().to_text()) 

 

    def test_richcmp(self): 

        o1 = Opcode.QUERY() 

        o2 = Opcode.NOTIFY() 

        o3 = Opcode.NOTIFY() 

        self.assertTrue(o2 == o3) 

        self.assertFalse(o2 != o3) 

        self.assertTrue(o1 != o2) 

        self.assertFalse(o1 == 1) 

        self.assertFalse(o1 == o2) 

        # can't use assertRaises here... 

        try: 

            o1 < o2 

            self.fail("operation that should have raised an error unexpectedly succeeded") 

        except Exception as err: 

            self.assertEqual(TypeError, type(err)) 

        try: 

            o1 <= o2 

            self.fail("operation that should have raised an error unexpectedly succeeded") 

        except Exception as err: 

            self.assertEqual(TypeError, type(err)) 

        try: 

            o1 > o2 

            self.fail("operation that should have raised an error unexpectedly succeeded") 

        except Exception as err: 

            self.assertEqual(TypeError, type(err)) 

        try: 

            o1 >= o2 

            self.fail("operation that should have raised an error unexpectedly succeeded") 

        except Exception as err: 

            self.assertEqual(TypeError, type(err)) 

 

exitif __name__ == '__main__': 

    unittest.main()