From 03cc7230c5d72bfe9795330dd830c2c8cd389427 Mon Sep 17 00:00:00 2001 From: Sei Lisa Date: Sat, 26 Jul 2014 03:08:19 +0200 Subject: [PATCH] Add historic files for preservation --- lslparse.tar.xz | Bin 0 -> 47048 bytes test_project.py | 81 ++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 81 insertions(+) create mode 100644 lslparse.tar.xz create mode 100644 test_project.py diff --git a/lslparse.tar.xz b/lslparse.tar.xz new file mode 100644 index 0000000000000000000000000000000000000000..92b896b2658a0402b4681a85f2216725e7c7d069 GIT binary patch literal 47048 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%0A>(<(_oT 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 I000D8S{k8cZ~y=R literal 0 HcmV?d00001 diff --git a/test_project.py b/test_project.py new file mode 100644 index 0000000..1149412 --- /dev/null +++ b/test_project.py @@ -0,0 +1,81 @@ +import unittest +from lslparse.lslfuncs import * + +class UnitTestCase(unittest.TestCase): + def reallyequal(self, actual, expected, tol=None): + if tol is None: + return repr(actual) == repr(expected) + + if type(actual) != type(expected): + return False + + # Deal with floats (edge cases, tolerance) + if isinstance(actual, float): + if actual == 0.0: + return str(actual) == str(expected) + elif math.isnan(actual): + return math.isnan(expected) + return abs(actual - expected) <= tol + + # Deal with tuples and lists (item-by-item, recursively) + if isinstance(actual, (tuple, list)): + return all(self.reallyequal(i1, i2, tol) for i1, i2 in zip(actual, expected)) + + # Fall back to 'classic' equality + return actual == expected + + def check(self, fn, expected, tol = None): + nan = float('nan') + inf = float('inf') + assert nan # keep PyFlakes happy + assert inf # keep PyFlakes happy + actual = eval(fn) + self.assertTrue(self.reallyequal(actual, expected, tol), "\nExpression: " + fn + '\nActual: ' + repr(actual) + '\nExpect: ' + repr(expected) + '\n') + + +class MetaTest(UnitTestCase): + def test_reallyequal(self): + self.assertTrue(self.reallyequal(float('nan'), float('nan'))) + self.assertFalse(self.reallyequal(-0.0, 0.0)) + self.assertFalse(self.reallyequal(-0.0, 0.0, 0.0)) + self.assertFalse(self.reallyequal(-0.1, 0.1, 0.0)) + self.assertTrue(self.reallyequal((float('nan'),), (float('nan'),))) + self.assertTrue(self.reallyequal((float('nan'),), (float('nan'),), 0.0)) + self.assertTrue(self.reallyequal('a', 'a', 0.0)) + self.assertTrue(self.reallyequal('a', 'a', None)) + self.assertTrue(self.reallyequal([float('nan')], [float('nan')])) + self.assertFalse(self.reallyequal(Quaternion((1.,0.,0.,0.)), (1.,0.,0.,0.))) + self.assertFalse(self.reallyequal(Quaternion((1.,0.,0.,0.)), (1.,0.,0.,0.), 0.0)) + self.check('nan', float('nan')) + +class LSLFunctionTest(UnitTestCase): + def test_llListSort(self): + self.check('''llListSort([Quaternion((1.,2.,3.,4.)),Quaternion((2.,3.,4.,5.)), + Quaternion((5.,4.,3.,2.)),Quaternion((4.,3.,2.,1.)), + Quaternion((3.,2.,1.,0.)) + ],1,0)''', + [Quaternion((3.,2.,1.,0.)),Quaternion((4.,3.,2.,1.)), + Quaternion((5.,4.,3.,2.)),Quaternion((2.,3.,4.,5.)), + Quaternion((1.,2.,3.,4.)) + ]) + self.check('''llListSort([Quaternion((1.,2.,3.,4.)),Quaternion((2.,3.,4.,5.)), + Quaternion((5.,4.,3.,2.)),Quaternion((4.,3.,2.,1.)), + Quaternion((3.,2.,1.,0.))] + ,1,1)''', + [Quaternion((1.,2.,3.,4.)),Quaternion((2.,3.,4.,5.)),Quaternion((5.,4.,3.,2.)),Quaternion((4.,3.,2.,1.)),Quaternion((3.,2.,1.,0.))] + ) + + self.check('''llListSort([Vector((1.,0.,0.)),Vector((0.,1.,0.)),Vector((0.,0.,3.)),Vector((3.,0.,0.))] + ,1,1)''', + [Vector((1., 0., 0.)), Vector((0., 1., 0.)), Vector((0., 0., 3.)), Vector((3., 0., 0.))] + ) + + self.check('''llListSort([2,0,1,1,2,2,2,3,2,4,1,5,2,6], 2, 1)''', + [1, 1, 1, 5, 2, 2, 2, 3, 2, 4, 2, 0, 2, 6]) + + self.check('''llListSort([2,0,1,1,2,2,2,3,2,4,1,5,2,6], 2, 0)''', + [2, 6, 2, 4, 2, 3, 2, 2, 2, 0, 1, 5, 1, 1]) + + +if __name__ == '__main__': + unittest.main()