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_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() case = Case( inputs=[("str", "Normal String"), ("unicode", u"Unicode String"), ("list", ["Hello", "world"])] ) # Check pickling. recorder.record(case) 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_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() case = Case(inputs=[('str', 'Normal String'), ('unicode', u'Unicode String'), ('list', ['Hello', 'world'])]) # Check pickling. recorder.record(case) 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() for i in range(10): inputs = [('comp1.x', i), ('comp1.y', i*2.)] outputs = [('comp1.z', i*1.5), ('comp2.normal', NormalDistribution(float(i),0.5))] recorder.record(Case(inputs=inputs, outputs=outputs, label='case%s'%i)) 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() for i in range(10): inputs = [('comp1.x', i), ('comp1.y', i*2.)] outputs = [('comp1.z', i*1.5), ('comp2.normal', NormalDistribution(float(i),0.5))] recorder.record(Case(inputs=inputs, outputs=outputs, label='case%s'%i)) iterator = recorder.get_iterator() iterator.selectors = ["value>=0","value<3"] count = 0 for i,case in enumerate(iterator): count += 1 for name,value in case.items(): self.assertTrue(value >= 0 and value<3)
def test_query(self): recorder = DBCaseRecorder() for i in range(10): inputs = [('comp1.x', i), ('comp1.y', i*2.)] outputs = [('comp1.z', i*1.5), ('comp2.normal', NormalDistribution(float(i),0.5))] recorder.record(Case(inputs=inputs, outputs=outputs, label='case%s'%i)) iterator = recorder.get_iterator() iterator.selectors = ["value>=0","value<3"] count = 0 for i,case in enumerate(iterator): count += 1 for name,value in case.items(): self.assertTrue(value >= 0 and value<3) self.assertEqual(count, 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)
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_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) self.assertEqual(count, 3)
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_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'] cases = [] for i in range(10): if i > 1: msg = '' else: msg = 'an error occurred' if i < 5: inputs = [('comp1.x', i), ('comp1.y', i * 2), ('comp1.y2', i * 3)] else: inputs = [('comp1.x', i), ('comp1.y', i * 2)] recorder.record(Case(inputs=inputs, outputs=outputs, msg=msg)) varnames = ['comp1.x', 'comp1.y', 'comp1.y2'] varinfo = case_db_to_dict(dfile, varnames) self.assertEqual(len(varinfo), 3) # each var list should have 3 data values in it (5 with the required variables minus # 2 with errors for name, lst in varinfo.items(): self.assertEqual(len(lst), 3) # now use caseiter_to_dict to grab the same data varinfo = caseiter_to_dict(recorder.get_iterator(), varnames) # each var list should have 3 data values in it (5 with the required variables minus # 2 with errors for name, lst in varinfo.items(): self.assertEqual(len(lst), 3) try: shutil.rmtree(tmpdir) except OSError: logging.error("problem removing directory %s" % tmpdir)
def test_close(self): # :memory: can be used after close. recorder = DBCaseRecorder() case = Case( inputs=[("str", "Normal String"), ("unicode", u"Unicode String"), ("list", ["Hello", "world"])] ) # Check pickling. recorder.record(case) recorder.close() recorder.record(case) # 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.record(case) recorder.close() assert_raises( self, "recorder.record(case)", globals(), locals(), RuntimeError, "Attempt to record on closed recorder" ) finally: try: shutil.rmtree(tmpdir) except OSError: logging.error("problem removing directory %s" % tmpdir)
def test_close(self): # :memory: can be used after close. recorder = DBCaseRecorder() case = Case(inputs=[('str', 'Normal String'), ('unicode', u'Unicode String'), ('list', ['Hello', 'world'])]) # Check pickling. recorder.record(case) recorder.close() recorder.record(case) # 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.record(case) recorder.close() assert_raises(self, 'recorder.record(case)', globals(), locals(), RuntimeError, 'Attempt to record on closed recorder') finally: try: shutil.rmtree(tmpdir) 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'] cases = [] for i in range(10): if i>1: msg = '' else: msg = 'an error occurred' if i<5: inputs = [('comp1.x', i), ('comp1.y', i*2), ('comp1.y2', i*3)] else: inputs = [('comp1.x', i), ('comp1.y', i*2)] recorder.record(Case(inputs=inputs, outputs=outputs, msg=msg)) varnames = ['comp1.x','comp1.y','comp1.y2'] varinfo = case_db_to_dict(dfile, varnames) self.assertEqual(len(varinfo), 3) # each var list should have 3 data values in it (5 with the required variables minus # 2 with errors for name,lst in varinfo.items(): self.assertEqual(len(lst), 3) # now use caseiter_to_dict to grab the same data varinfo = caseiter_to_dict(recorder.get_iterator(), varnames) # each var list should have 3 data values in it (5 with the required variables minus # 2 with errors for name,lst in varinfo.items(): self.assertEqual(len(lst), 3) try: shutil.rmtree(tmpdir) except OSError: logging.error("problem removing directory %s" % tmpdir)