def test_collapse(self): """Checks the collapse function.""" # Reload in case we prunned it before self.hier_st = SegmentTree("test/SALAMI_636.jams") self.hier_st.collapse_to_level("small_scale") self.assertEqual(len(self.hier_st.get_segments_in_level( "small_scale")), 33) self.assertEqual(len(self.hier_st.get_segments_in_level( "large_scale")), 0) self.assertEqual(len(self.hier_st.get_segments_in_level( "root")), 1) self.assertEqual(len(self.hier_st.levels), 2)
def test_construct_mini_tree(self): tree = SegmentTree([1,2,3,4]) self.assertEquals(10, tree.sum(0, 3))
def test_construct_terminal(self): tree = SegmentTree([1,2]) self.assertEquals(3, tree.sum(0, 1))
def test_set_internal(self): tree = SegmentTree([1,2,3,4]) self.assertEquals(10, tree.sum(0, 3)) tree.set(1, 10) self.assertEquals(11, tree.sum(0, 1)) self.assertEquals(18, tree.sum(0, 3))
def test_set_leaf(self): tree = SegmentTree([1,2,3,4]) self.assertEquals(2, tree.sum(1, 1)) tree.set(1, 10) self.assertEquals(10, tree.sum(1, 1))
def test_partial_sum(self): tree = SegmentTree([1,2,3,4,12,13]) self.assertEquals(3, tree.sum(0, 1)) self.assertEquals(7, tree.sum(2, 3)) self.assertEquals(21, tree.sum(1, 4))
def setUp(self): """Load JAMS. One flat (Isophonics) and one hierarchichal (SALAMI).""" self.flat_st = SegmentTree("test/Isophonics_01_-_" "A_Hard_Day\'s_Night.jams") self.hier_st = SegmentTree("test/SALAMI_636.jams")
class TestSegmentTree(unittest.TestCase): def setUp(self): """Load JAMS. One flat (Isophonics) and one hierarchichal (SALAMI).""" self.flat_st = SegmentTree("test/Isophonics_01_-_" "A_Hard_Day\'s_Night.jams") self.hier_st = SegmentTree("test/SALAMI_636.jams") def test_hier_levels(self): """Checks the levels of the hierarchical tree.""" # 4 levels: root, function, large_scale and small_scale self.assertEqual(len(self.hier_st.levels), 4) def test_flat_levels(self): """Checks the levels of the flat tree.""" # 2 levels: root and function self.assertEqual(len(self.flat_st.levels), 2) def test_hier_segment_retrieval(self): """Checks whether we are able to retrieve all segments of a hierarchical tree.""" # Root level self.assertEqual(len(self.hier_st.get_segments_in_level("root")), 1) self.assertEqual(len(self.hier_st.get_segments_in_level(level_idx=0)), 1) # Function level self.assertEqual(len(self.hier_st.get_segments_in_level("function")), 11) self.assertEqual(len(self.hier_st.get_segments_in_level(level_idx=1)), 11) # Large scale level self.assertEqual(len(self.hier_st.get_segments_in_level( "large_scale")), 11) self.assertEqual(len(self.hier_st.get_segments_in_level(level_idx=2)), 11) # Small scale level self.assertEqual(len(self.hier_st.get_segments_in_level( "small_scale")), 33) self.assertEqual(len(self.hier_st.get_segments_in_level(level_idx=3)), 33) def test_flat_segment_retrieval(self): """Checks whether we are able to retrieve all segments of a flat tree.""" # Root level self.assertEqual(len(self.flat_st.get_segments_in_level("root")), 1) self.assertEqual(len(self.flat_st.get_segments_in_level(level_idx=0)), 1) # Function level self.assertEqual(len(self.flat_st.get_segments_in_level("function")), 12) self.assertEqual(len(self.flat_st.get_segments_in_level(level_idx=1)), 12) def test_pruning(self): """Checks the prunning function.""" # Prune at Function level self.hier_st.prune_to_level("function") self.assertEqual(len(self.hier_st.get_segments_in_level("function")), 11) self.assertEqual(len(self.hier_st.get_segments_in_level("large_scale") ), 0) def test_collapse(self): """Checks the collapse function.""" # Reload in case we prunned it before self.hier_st = SegmentTree("test/SALAMI_636.jams") self.hier_st.collapse_to_level("small_scale") self.assertEqual(len(self.hier_st.get_segments_in_level( "small_scale")), 33) self.assertEqual(len(self.hier_st.get_segments_in_level( "large_scale")), 0) self.assertEqual(len(self.hier_st.get_segments_in_level( "root")), 1) self.assertEqual(len(self.hier_st.levels), 2)