def test_split(self):
        data = TestGazelibMethods.data

        # data splitting when change in key
        data_splitted = gazelib.split_at_change_in_value(data, 'tag')
        self.assertEqual(len(data_splitted[0]), 2)
        self.assertEqual(len(data_splitted[1]), 1)
        self.assertEqual(len(data_splitted[2]), 3)
        # test the first value of one of the clips
        self.assertEqual(gazelib.get_value(data_splitted[1], 0, 'time'), 3)
    def test_selections(self):
        data = TestGazelibMethods.data

        # get value works with some input
        self.assertEqual(gazelib.get_value(data, 3, 'x'), 0.8)

        # check if right amount of rows returned after selection
        clip = gazelib.first_gazepoints_by_time(data, 'time', 2)
        self.assertEqual(len(clip), 2)
        self.assertEqual(gazelib.get_value(clip, 0, 'time'), 1)

        clip = gazelib.first_gazepoints(data, 3)
        self.assertEqual(len(clip), 3)
        self.assertEqual(gazelib.get_value(clip, 0, 'time'), 1)

        clip = gazelib.gazepoints_after_time(data, 'time', 3)
        self.assertEqual(len(clip), 3)
        self.assertEqual(gazelib.get_value(clip, 0, 'time'), 4)

        clip = gazelib.gazepoints_containing_value(data, 'tag', ['definately_not_there', 'target2'])
        self.assertEqual(len(clip), 3)
        self.assertEqual(gazelib.get_value(clip, 1, 'time'), 5)

        clip = gazelib.gazepoints_not_containing_value(data, 'tag', ['target2'])
        self.assertEqual(len(clip), 3)
        self.assertEqual(gazelib.get_value(clip, 2, 'time'), 3)
    def test_keyadd(self):
        data = TestGazelibMethods.data

        # adding keys
        data2 = gazelib.add_key(data, 'z', len(data)*[-1])
        self.assertEqual(gazelib.get_value(data2, 4, 'z'), -1)

        # adding insuffisiently long vector of values produces error
        with self.assertRaises(IndexError):
            gazelib.add_key(data, 'z', [1,2,3])


        # metrics calculations
        self.assertEqual(gazelib.duration(data, 'time'), 5)
        self.assertEqual(gazelib.longest_non_valid_streak(data, 'yval', 'time', [0,1]), 2)