def test_close(self): # :memory: can be used after close. recorder = DBCaseRecorder() inps = ['str', 'unicode', 'list'] recorder.register(self, inps, []) inputs = ['Normal String', u'Unicode String', ['Hello', 'world']] recorder.record(self, inputs, [], None, '', '') recorder.close() recorder.record(self, inputs, [], None, '', '') # File-based DB recorder can not be used after close. tmpdir = tempfile.mkdtemp() try: dfile = os.path.join(tmpdir, 'junk.db') recorder = DBCaseRecorder(dfile) recorder.register(self, inps, []) recorder.record(self, inputs, [], None, '', '') recorder.close() code = "recorder.record(self, inputs, [], None, '', '')" assert_raises(self, code, globals(), locals(), RuntimeError, 'Attempt to record on closed recorder') finally: try: shutil.rmtree(tmpdir, onerror=onerror) except OSError: logging.error("problem removing directory %s", tmpdir)
def test_db_to_dict(self): tmpdir = tempfile.mkdtemp() dfile = os.path.join(tmpdir, 'junk.db') recorder = DBCaseRecorder(dfile) # create some Cases where some are missing a variable outputs = ['comp1.z', 'comp2.z'] inputs = ['comp1.x', 'comp1.y', 'comp1.y2'] recorder.register(self, inputs, outputs) for i in range(10): inputs = [i, i*2, i*3] outputs = [i*i, float('NaN')] recorder.record(self, inputs, outputs, None, '', '') varnames = ['comp1.x', 'comp1.y', 'comp1.y2'] varinfo = case_db_to_dict(dfile, varnames) self.assertEqual(len(varinfo), 3) # each var list should have 10 data values in it for lst in varinfo.values(): self.assertEqual(len(lst), 10) # now use caseiter_to_dict to grab the same data varinfo = caseiter_to_dict(recorder.get_iterator(), varnames) # each var list should have 10 data values in it for lst in varinfo.values(): self.assertEqual(len(lst), 10) try: shutil.rmtree(tmpdir, onerror=onerror) except OSError: logging.error("problem removing directory %s", tmpdir)
def test_close(self): # :memory: can be used after close. recorder = DBCaseRecorder() inps = ['str', 'unicode', 'list'] recorder.register(self, inps, []) inputs = ['Normal String', u'Unicode String', ['Hello', 'world']] recorder.record(self, inputs, [], None, '', '') recorder.close() recorder.record(self, inputs, [], None, '', '') # File-based DB recorder can not be used after close. tmpdir = tempfile.mkdtemp() try: dfile = os.path.join(tmpdir, 'junk.db') recorder = DBCaseRecorder(dfile) recorder.register(self, inps, []) recorder.record(self, inputs, [], None, '', '') recorder.close() code = "recorder.record(self, inputs, [], None, '', '')" assert_raises(self, code, globals(), locals(), RuntimeError, 'Attempt to record on closed recorder') finally: try: shutil.rmtree(tmpdir, onerror=onerror) except OSError: logging.error("problem removing directory %s", tmpdir)
def test_db_to_dict(self): tmpdir = tempfile.mkdtemp() dfile = os.path.join(tmpdir, 'junk.db') recorder = DBCaseRecorder(dfile) # create some Cases where some are missing a variable outputs = ['comp1.z', 'comp2.z'] inputs = ['comp1.x', 'comp1.y', 'comp1.y2'] recorder.register(self, inputs, outputs) for i in range(10): inputs = [i, i * 2, i * 3] outputs = [i * i, float('NaN')] recorder.record(self, inputs, outputs, None, '', '') varnames = ['comp1.x', 'comp1.y', 'comp1.y2'] varinfo = case_db_to_dict(dfile, varnames) self.assertEqual(len(varinfo), 3) # each var list should have 10 data values in it for lst in varinfo.values(): self.assertEqual(len(lst), 10) # now use caseiter_to_dict to grab the same data varinfo = caseiter_to_dict(recorder.get_iterator(), varnames) # each var list should have 10 data values in it for lst in varinfo.values(): self.assertEqual(len(lst), 10) try: shutil.rmtree(tmpdir, onerror=onerror) except OSError: logging.error("problem removing directory %s", tmpdir)
def test_string(self): recorder = DBCaseRecorder() inputs = ['str', 'unicode', 'list'] # Check pickling. recorder.register(self, inputs, []) inputs = ['Normal String', u'Unicode String', ['Hello', 'world']] recorder.record(self, inputs, [], None, '', '') for case in recorder.get_iterator(): self.assertEqual(case['str'], 'Normal String') self.assertEqual(case['unicode'], u'Unicode String') self.assertEqual(case['list'], ['Hello', 'world'])
def test_string(self): recorder = DBCaseRecorder() inputs = ['str', 'unicode', 'list'] # Check pickling. recorder.register(self, inputs, []) inputs = ['Normal String', u'Unicode String', ['Hello', 'world']] recorder.record(self, inputs, [], None, '', '') for case in recorder.get_iterator(): self.assertEqual(case['str'], 'Normal String') self.assertEqual(case['unicode'], u'Unicode String') self.assertEqual(case['list'], ['Hello', 'world'])
def test_pickle_conversion(self): recorder = DBCaseRecorder() inputs = ['comp1.x', 'comp1.y'] outputs = ['comp1.z', 'comp2.normal'] recorder.register(self, inputs, outputs) for i in range(10): inputs = [i, i*2.] outputs = [i*1.5, NormalDistribution(float(i), 0.5)] recorder.record(self, inputs, outputs, None, '', '') iterator = recorder.get_iterator() for i, case in enumerate(iterator): self.assertTrue(isinstance(case['comp2.normal'], NormalDistribution)) self.assertEqual(case['comp2.normal'].mu, float(i)) self.assertEqual(case['comp2.normal'].sigma, 0.5) self.assertTrue(isinstance(case['comp1.y'], float)) self.assertEqual(case['comp1.y'], i*2.) self.assertEqual(case['comp1.z'], i*1.5)
def test_query(self): recorder = DBCaseRecorder() inputs = ['comp1.x', 'comp1.y'] outputs = ['comp1.z', 'comp2.normal'] recorder.register(self, inputs, outputs) for i in range(10): inputs = [i, i * 2.] outputs = [i * 1.5, NormalDistribution(float(i), 0.5)] recorder.record(self, inputs, outputs, None, '', '') iterator = recorder.get_iterator() iterator.selectors = ["value>=0", "value<3"] count = 0 for i, case in enumerate(iterator): count += 1 for value in case.values(): self.assertTrue(value >= 0 and value < 3)
def test_query(self): recorder = DBCaseRecorder() inputs = ['comp1.x', 'comp1.y'] outputs = ['comp1.z', 'comp2.normal'] recorder.register(self, inputs, outputs) for i in range(10): inputs = [i, i*2.] outputs = [i*1.5, NormalDistribution(float(i), 0.5)] recorder.record(self, inputs, outputs, None, '', '') iterator = recorder.get_iterator() iterator.selectors = ["value>=0", "value<3"] count = 0 for i, case in enumerate(iterator): count += 1 for value in case.values(): self.assertTrue(value >= 0 and value < 3) self.assertEqual(count, 3)
def test_pickle_conversion(self): recorder = DBCaseRecorder() inputs = ['comp1.x', 'comp1.y'] outputs = ['comp1.z', 'comp2.normal'] recorder.register(self, inputs, outputs) for i in range(10): inputs = [i, i * 2.] outputs = [i * 1.5, NormalDistribution(float(i), 0.5)] recorder.record(self, inputs, outputs, None, '', '') iterator = recorder.get_iterator() for i, case in enumerate(iterator): self.assertTrue( isinstance(case['comp2.normal'], NormalDistribution)) self.assertEqual(case['comp2.normal'].mu, float(i)) self.assertEqual(case['comp2.normal'].sigma, 0.5) self.assertTrue(isinstance(case['comp1.y'], float)) self.assertEqual(case['comp1.y'], i * 2.) self.assertEqual(case['comp1.z'], i * 1.5)