def test_lister_mismatch_condition_counts(self): items = lister.graceful_read_items('tests/test_lister_items-4.txt') self.assertEqual(len(items), 5) exp = lister.Experiment(items) self.assertEqual(len(exp.section_names), 1) self.assertEqual(exp.section_names[0], 'filler') sec = exp.section('filler') # condition count is three self.assertEqual(sec.condition_count, 3) cnames = sec.condition_sets # two different sets of condition names self.assertEqual(len(cnames), 2) # five actual distinct conditions self.assertEqual(len([cond for set in cnames for cond in set]), 5) silence = Silence() sys.stdout = silence excepted = False try: exp.verify() except SystemExit: excepted = True self.assertTrue(excepted) sys.stdout = sys.__stdout__
def test_items_experiments_only_filler(self): items = lister.graceful_read_items('tests/test_lister_items-3.txt') exp = lister.Experiment(items) self.assertEqual(exp.field_count, 1) self.assertEqual(set(exp.field_count_counts), set([(1, 4)])) self.assertEqual(set(exp.items_by_field_count(1)), set(items)) silence = Silence() sys.stdout = silence exp.filler_sections = ['filler'] # there's only one section, so... self.assertEqual(exp.filler_sections, []) self.assertFalse(exp.has_fillers) self.assertEqual(exp.target_count, 2) self.assertEqual(exp.filler_count, 0) exp.filler_sections = ['target'] # now nothing's a filler, so... self.assertEqual(exp.filler_sections, []) self.assertFalse(exp.has_fillers) self.assertEqual(exp.target_count, 2) self.assertEqual(exp.filler_count, 0) sys.stdout = sys.__stdout__ # let's make sure that the field_count_report() doesn't give us a warning silence = Silence() sys.stdout = silence exp.field_count_report() sys.stdout = sys.__stdout__ found_warning = False for line in silence(): if line.find('WARNING') > -1: found_warning = True self.assertFalse(found_warning)
def test_items_experiments_basic(self): items = lister.graceful_read_items('tests/test_lister_items-1.txt') exp = lister.Experiment(items) self.assertEqual(exp.field_count, 2) self.assertEqual(set(exp.field_count_counts), set([(2, 1), (1, 1)])) self.assertEqual(exp.items_by_field_count(1), [items[0]]) self.assertEqual(exp.items_by_field_count(2), [items[1]]) self.assertFalse(exp.has_fillers) self.assertEqual(exp.target_count, 2) self.assertEqual(exp.filler_count, 0)
def test_lister_trivial_latin_square_lists(self): items = lister.graceful_read_items('tests/test_lister_items-1.txt') self.assertEqual(len(items), 2) exp = lister.Experiment(items) self.assertEqual(len(exp.section_names), 1) self.assertEqual(exp.section_names[0], 'test') sec = exp.section('test') list0 = sec.latin_square_list(0) self.assertEqual(len(list0), 2) list1 = sec.latin_square_list(1) self.assertEqual(len(list1), 2) self.assertEqual(list0, list1)
def test_lister_different_condition_names(self): items = lister.graceful_read_items('tests/test_lister_items-3.txt') self.assertEqual(len(items), 4) exp = lister.Experiment(items) self.assertEqual(len(exp.section_names), 1) self.assertEqual(exp.section_names[0], 'filler') sec = exp.section('filler') # two conditions at a time self.assertEqual(sec.condition_count, 2) cnames = sec.condition_sets # two different sets of condition names self.assertEqual(len(cnames), 2) # four actual distinct conditions self.assertEqual(len([cond for set in cnames for cond in set]), 4) excepted = False try: exp.verify() except SystemExit: excepted = True self.assertFalse(excepted)
def sample_experiment(item_specs): item_list = [] for i in range(len(item_specs)): # the section specification could be a number or a dict spec = item_specs[i] if type(spec) is not dict: spec = {} spec.update(items=int(item_specs[i])) spec.setdefault('fields', 1) spec.setdefault('conditions', 1) for j in range(spec.get('items')): if spec.get('conditions') > 1: for k in range(spec.get('conditions')): item_list.append( lister.Item('section' + str(i), j, 'condition' + str(k), ['test'] * spec.get('fields'))) else: item_list.append( lister.Item('section' + str(i), j, 'condition', ['test'] * spec.get('fields'))) return lister.Experiment(item_list)