def test_init_sampling(self): b = il.Balanced([[1, 2], [2, 3]], sample_num=1000) rankings, probabilities = zip(*b.ranking_distribution) assert set([(1, 2), (2, 1)]) == set([tuple(r) for r in rankings]) self.assert_almost_equal(*probabilities) res = b.interleave() assert res == [1, 2] or res == [2, 1]
def test_dump(self, tmpdir): tmpfile = str(tmpdir) + '/balanced.json' b = il.Balanced([[1, 2], [2, 3]], sample_num=100) b.dump_rankings(tmpfile) with open(tmpfile, 'r') as f: obj = json.load(f) # Test keys s = {str(hash(r)) for r in b._rankings} assert s == set(obj.keys()) # Test rankings l1 = sorted(b._rankings) l2 = sorted([v['ranking']['ranking_list'] for v in obj.values()]) assert l1 == l2 # Test a l1 = sorted([r.a for r in b._rankings]) l2 = sorted([v['ranking']['a'] for v in obj.values()]) assert l1 == l2 # Test b l1 = sorted([r.b for r in b._rankings]) l2 = sorted([v['ranking']['b'] for v in obj.values()]) assert l1 == l2
def test_raise_value_error(self): with pytest.raises(ValueError): il.Balanced([[0], [1], [2]]) # three rankings are not acceptable