1#!/usr/bin/env python 2# Copyright (c) 2016 The WebRTC project authors. All Rights Reserved. 3# 4# Use of this source code is governed by a BSD-style license 5# that can be found in the LICENSE file in the root of the source 6# tree. An additional intellectual property rights grant can be found 7# in the file PATENTS. All contributing project authors may 8# be found in the AUTHORS file in the root of the source tree. 9 10"""Run the tests with 11 12 python misc_test.py 13or 14 python3 misc_test.py 15""" 16 17from __future__ import division 18import random 19import unittest 20 21import misc 22 23 24class TestMisc(unittest.TestCase): 25 def testUnwrapMod3(self): 26 data = [0, 1, 2, 0, -1, -2, -3, -4] 27 unwrapped_3 = misc.Unwrap(data, 3) 28 self.assertEqual([0, 1, 2, 3, 2, 1, 0, -1], unwrapped_3) 29 30 def testUnwrapMod4(self): 31 data = [0, 1, 2, 0, -1, -2, -3, -4] 32 unwrapped_4 = misc.Unwrap(data, 4) 33 self.assertEqual([0, 1, 2, 0, -1, -2, -3, -4], unwrapped_4) 34 35 def testDataShouldNotChangeAfterUnwrap(self): 36 data = [0, 1, 2, 0, -1, -2, -3, -4] 37 _ = misc.Unwrap(data, 4) 38 39 self.assertEqual([0, 1, 2, 0, -1, -2, -3, -4], data) 40 41 def testRandomlyMultiplesOfModAdded(self): 42 # `unwrap` definition says only multiples of mod are added. 43 random_data = [random.randint(0, 9) for _ in range(100)] 44 45 for mod in range(1, 100): 46 random_data_unwrapped_mod = misc.Unwrap(random_data, mod) 47 48 for (old_a, a) in zip(random_data, random_data_unwrapped_mod): 49 self.assertEqual((old_a - a) % mod, 0) 50 51 def testRandomlyAgainstInequalityDefinition(self): 52 # Data has to satisfy -mod/2 <= difference < mod/2 for every 53 # difference between consecutive values after unwrap. 54 random_data = [random.randint(0, 9) for _ in range(100)] 55 56 for mod in range(1, 100): 57 random_data_unwrapped_mod = misc.Unwrap(random_data, mod) 58 59 for (a, b) in zip(random_data_unwrapped_mod, 60 random_data_unwrapped_mod[1:]): 61 self.assertTrue(-mod / 2 <= b - a < mod / 2) 62 63 def testRandomlyDataShouldNotChangeAfterUnwrap(self): 64 random_data = [random.randint(0, 9) for _ in range(100)] 65 random_data_copy = random_data[:] 66 for mod in range(1, 100): 67 _ = misc.Unwrap(random_data, mod) 68 69 self.assertEqual(random_data, random_data_copy) 70 71if __name__ == "__main__": 72 unittest.main() 73