|
# 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()
|