def test_save(self): A = [1, 1, 1, 1, 3, 0, 1, 1, 1, 1, 3, 1, 2, 2] wa = WatArray() wa.Init(A) self.assertEqual(wa.Rank(3, 14), 2) _, filename = tempfile.mkstemp() wa.dump(filename) data = wa.dumps() del wa wa = WatArray() wa.load(filename) os.remove(filename) self.assertEqual(wa.Rank(3, 14), 2) del wa wa = WatArray() wa.loads(data) self.assertEqual(wa.Rank(3, 14), 2) del wa
def test_error(self): wa = WatArray() _, filename = tempfile.mkstemp() mode = os.stat(filename)[0] \ & ~stat.S_IWUSR & ~stat.S_IWGRP & ~stat.S_IWOTH os.chmod(filename, mode) self.assertRaises(IOError, lambda: wa.dump(filename)) mode = mode & stat.S_IWUSR os.chmod(filename, mode) os.remove(filename) self.assertRaises(IOError, lambda: wa.load(filename))
def test_example(self): wa = WatArray() A = [5, 1, 0, 4, 2, 2, 0, 3] wa.Init(A) self.assertEqual(wa.length(), 8) self.assertEqual(wa.Lookup(3), 4) self.assertEqual(wa.Rank(2, 6), 2) self.assertEqual(wa.Select(2, 2), 5) self.assertEqual(wa.RankLessThan(4, 5), 3) self.assertEqual(wa.RankMoreThan(4, 5), 1) self.assertEqual(wa.FreqRange(2, 5, 2, 6), 3) self.assertEqual(wa.RankAll(4, 5), (1, 3, 1)) self.assertEqual(wa.RankAll(7, 5), (NOTFOUND, NOTFOUND, NOTFOUND)) self.assertEqual(wa.MaxRange(1, 6), (3, 4)) self.assertEqual(wa.MinRange(1, 6), (2, 0)) self.assertEqual(wa.QuantileRange(1, 6, 3), (4, 2)) self.assertEqual(wa.ListModeRange(2, 5, 1, 6, 3), [(2, 2), (4, 1)]) self.assertEqual( wa.ListMinRange(1, 5, 1, 6, 3), [(1, 1), (2, 2), (4, 1)]) self.assertEqual( wa.ListMaxRange(1, 5, 1, 6, 3), [(4, 1), (2, 2), (1, 1)]) fname = tempfile.mkstemp()[1] wa.dump(fname) wa.Clear() self.assertEqual(wa.length(), 0) wa.load(fname) self.assertEqual(wa.length(), 8) os.remove(fname) s = wa.dumps() wa.Clear() self.assertEqual(wa.length(), 0) wa.loads(s) self.assertEqual(wa.length(), 8) wa.Clear() del wa
def test_trivial(self): wa = WatArray() self.assertEqual(wa.alphabet_num(), 0) self.assertEqual(wa.length(), 0) self.assertEqual(wa.Rank(0, 0), NOTFOUND) self.assertEqual(wa.Select(0, 0), NOTFOUND) self.assertEqual(wa.Lookup(0), NOTFOUND) self.assertEqual(wa.Freq(0), NOTFOUND) self.assertEqual(wa.FreqSum(0, 1), NOTFOUND) rank, rank_less_than, rank_more_than = wa.RankAll(0, 0) self.assertEqual(rank, NOTFOUND) self.assertEqual(rank_less_than, NOTFOUND) self.assertEqual(rank_more_than, NOTFOUND) pos, val = wa.MaxRange(0, 0) self.assertEqual(pos, NOTFOUND) self.assertEqual(val, NOTFOUND) _, filename = tempfile.mkstemp() wa.dump(filename) data = wa.dumps() del wa wa = WatArray() wa.load(filename) os.remove(filename) self.assertEqual(wa.Rank(0, 0), NOTFOUND) self.assertEqual(wa.Select(0, 0), NOTFOUND) self.assertEqual(wa.Lookup(0), NOTFOUND) del wa wa = WatArray() wa.loads(data) self.assertEqual(wa.Rank(0, 0), NOTFOUND) self.assertEqual(wa.Select(0, 0), NOTFOUND) self.assertEqual(wa.Lookup(0), NOTFOUND) del wa