def test_part_not_embedded(self): cube = Box() cube.exporter('gltf')( os.path.join(self.foldername, 'cube.gltf'), embed=False, ) self.assertFilesizeNonZero(os.path.join(self.foldername, 'cube.gltf')) self.assertFilesizeNonZero(os.path.join(self.foldername, 'cube.bin'))
def test_add_replace_id(self): c = self.get_catalogue() c.add('id1', Box(), criteria={'try': 1, 'old': 'foo'}) c.add('id1', Box(), criteria={'try': 2, 'new': 'bar'}, force=True) self.assertEqual(len(c.items.all()), 1) item = c.items.all()[0] self.assertNotIn('old', item['criteria']) self.assertIn('new', item['criteria'])
def test_no_connection(self, mock_requests_post): part = Box() disp_env = display.cqparts_server.CQPartsServerDisplayEnv() disp_env.display(part) # no error, and no further contact attempted mock_requests_post.assert_not_called()
def test_box(self): obj = Box(length=1, width=2, height=3) bb = obj.bounding_box self.assertAlmostEqual( (bb.xmin, bb.ymin, bb.zmin, bb.xmax, bb.ymax, bb.zmax), (-0.5, -1, -1.5, 0.5, 1, 1.5), places=1)
def test_deserialize(self): c = self.get_catalogue() c.add('id1', Box()) c.close() # re-open catalogue c = self.get_catalogue() i = c.get_query() item = c.find(i.id == 'id1') obj = c.deserialize_item(item) self.assertIsInstance(obj, Box)
def test_add_single_item(self): c = self.get_catalogue() self.assertEqual(len(c.items.all()), 0) for (id_str, count) in [('id1', 1), ('id2', 2)]: # add box to db, make sure it was added c.add(id_str, Box()) self.assertEqual(len(c.items.all()), count) item = c.items.all()[count - 1] self.assertEqual(item['id'], id_str) self.assertEqual(item['criteria'], {}) # object serialization tests are out of scope self.assertEqual(set(item['obj'].keys()), set(['params', 'class', 'lib']))
def test_basic(self, mock_serverobj, mock_webbrowser_open): # setup mocks mock_server = mock.MagicMock(server_address=('abc', 123)) mock_serverobj.return_value = mock_server part = Box() disp_env = display.web.WebDisplayEnv() with suppress_stdout_stderr(): disp_env.display(part) # webbrowser.open called self.assertEquals(len(mock_webbrowser_open.call_args_list), 1) mock_webbrowser_open.assert_called_once_with('http://abc:123/') # SocketServer.ThreadingTCPServer.serve_forever called mock_server.serve_forever.assert_called_once_with()
def test_basic(self, mock_requests_post, mock_requests_get): part = Box() disp_env = display.cqparts_server.CQPartsServerDisplayEnv() disp_env.display(part) # status mock_requests_get.assert_called_once_with('http://abc:123/status') self.assertEqual(len(mock_requests_post.call_args_list), 2) # upload (args, kwargs) = mock_requests_post.call_args_list[0] self.assertEqual(args, ('http://abc:123/upload',)) self.assertEqual(len(kwargs['files']), 2) # notify (args, kwargs) = mock_requests_post.call_args_list[1] self.assertEqual(args, ('http://abc:123/notify',))
def test_bad_env(self): disp_env = display.cqparts_server.CQPartsServerDisplayEnv() with self.assertRaises(KeyError): disp_env.display(Box())
def test_get(self): c = self.get_catalogue() c.add('id1', Box()) i = c.get_query() obj = c.get(i.id == 'id1') self.assertIsInstance(obj, Box)
def test_get_registered(self): @codec.register_exporter('abc', Part) class Abc(codec.Exporter): pass self.assertIsInstance(codec.get_exporter(Box(), 'abc'), Abc)
def test_get_registered_subtype(self): @codec.register_exporter('abc', Component) class Abc(codec.Exporter): pass self.assertIsInstance(codec.get_exporter(Box(), 'abc'), Abc) # Part
def test_bad_part(self): p = PartsList() with self.assertRaises(ParameterError): p.cast([Box(), 1])
def populate_catalogue(self, catalogue): catalogue.add('id1', Box(length=20), criteria={'a': 0, 'b': 1}) catalogue.add('id2', Box(width=20), criteria={'a': 0, 'b': 2}) catalogue.add('id3', Box(height=20), criteria={'a': 1, 'b': 2})
def test_export(self): cube = Box() self.assertFilesizeZero(self.filename) cube.exporter('stl')(self.filename) self.assertFilesizeNonZero(self.filename)
def test_export(self): cube = Box() self.assertEqual(os.stat(self.filename).st_size, 0) cube.exporter('amf')(self.filename) self.assertGreater(os.stat(self.filename).st_size, 0)
def test_add_duplicate_id(self): c = self.get_catalogue() c.add('id1', Box()) self.assertRaises(ValueError, c.add, 'id1', Box())
def test_no_exporter(self): with self.assertRaises(TypeError): codec.get_exporter(Box(), 'abc')
def make_components(self): yield { 'p': Box(), # good key 'a.b': Box(), # key can't contain a '.' }
def make_components(self): yield { 'p': Box(), # good key 1: Box(), # bad key (must be a string) }
def make_components(self): yield { 'p': Box(), # good component 'x': 123, # bad component }
def test_part(self, mock_show): part = Box() disp_env = display.freecad.FreeCADDisplayEnv() disp_env.display(part) mock_show.assert_called_once_with(part.local_obj, (192, 192, 192, 0))
def test_export(self): cube = Box() self.assertFilesizeZero(self.filename) cube.exporter('svg')(self.filename) self.assertGreater(os.stat(self.filename).st_size, 0)
def make_components(self): return {'p': Box()}
def test_partstuple(self): p = PartsList() (b1, b2) = (Box(), Box()) v = p.cast((b1, b2)) # tuple self.assertIsInstance(v, (list, tuple)) self.assertEqual([id(x) for x in v], [id(b1), id(b2)])