def test_data_corpus(self): table = load_images() table = DummyCorpus(table) self.send_signal(self.widget.Inputs.images, table) results = self.get_output(self.widget.Outputs.embeddings) self.assertEqual(type(results), DummyCorpus) # check if outputs type self.assertEqual(len(results), len(table))
def test_data_regular_table(self): table = load_images() self.send_signal(self.widget.Inputs.images, table) results = self.get_output(self.widget.Outputs.embeddings) self.assertEqual(type(results), Table) # check if output right type # true for zoo since no images are skipped self.assertEqual(len(results), len(table))
def test_unexpected_error(self, _): """ In this unittest we will simulate how the widget survives unexpected error. """ w = self.widget table = load_images() self.assertEqual(w.cb_embedder.currentText(), "Inception v3") self.send_signal(w.Inputs.images, table) self.wait_until_finished() output = self.get_output(self.widget.Outputs.embeddings) self.assertIsNone(output) self.widget.Error.unexpected_error.is_shown()
def test_cancel_embedding(self): table = load_images() # make table longer that the processing do not finish before click table = Table(table.domain, np.repeat(table.X, 50, axis=0), np.repeat(table.Y, 50, axis=0), np.repeat(table.metas, 50, axis=0)) self.send_signal(self.widget.Inputs.images, table) time.sleep(0.5) self.widget.cancel_button.click() self.wait_until_finished() results = self.get_output(self.widget.Outputs.embeddings) self.assertIsNone(results)
def test_rerun_on_new_data(self): """ Check if embedding is automatically rerun on new data """ self.widget._auto_apply = False table = load_images() self.assertIsNone(self.get_output(self.widget.Outputs.embeddings)) self.send_signal(self.widget.Inputs.images, table[:3]) self.wait_until_finished() self.assertEqual(3, len(self.get_output(self.widget.Outputs.embeddings))) self.send_signal(self.widget.Inputs.images, table[:1]) self.wait_until_finished() self.assertEqual(1, len(self.get_output(self.widget.Outputs.embeddings)))
def test_no_connection(self, _): """ In this unittest we will simulate that there is no connection and check whether embedder gets changed to SqueezeNet. """ w = self.widget table = load_images() self.assertEqual(w.cb_embedder.currentText(), "Inception v3") self.send_signal(w.Inputs.images, table) self.assertEqual(w.cb_embedder.currentText(), "SqueezeNet (local)") self.wait_until_stop_blocking() output = self.get_output(self.widget.Outputs.embeddings) self.assertEqual(type(output), Table) self.assertEqual(len(output), len(table)) self.assertEqual(output.X.shape[1], 1000)
def setUpClass(cls): super().setUpClass() cls.signal_name = "Embeddings" cls.signal_data = Table("iris") cls.test_images = load_images() domain = Domain([ ContinuousVariable("emb1"), ContinuousVariable("emb2"), ContinuousVariable("emb3")], cls.test_images.domain.class_vars, cls.test_images.domain.metas ) data = np.random.random((len(cls.test_images), 3)) cls.fake_embeddings = Table(domain, data, cls.test_images.Y, metas=cls.test_images.metas)
def main(argv=None): from AnyQt.QtWidgets import QApplication from orangecontrib.imageanalytics.widgets.tests.utils import load_images logging.basicConfig(level=logging.DEBUG) app = QApplication(list(argv) if argv else []) data = load_images() widget = OWImageEmbedding() widget.show() assert QSignalSpy(widget.blockingStateChanged).wait() widget.set_data(data) widget.handleNewSignals() app.exec() widget.set_data(None) widget.handleNewSignals() widget.saveSettings() widget.onDeleteWidget() return 0
def test_skipped_images(self): table = load_images() self.send_signal(self.widget.Inputs.images, table) results = self.get_output(self.widget.Outputs.skipped_images) # in case of zoo where all images are present self.assertEqual(results, None) # all skipped del table.domain.metas[0].attributes["origin"] table[:, "Images"] = "http://www.none.com/image.jpg" self.send_signal(self.widget.Inputs.images, table) skipped = self.get_output(self.widget.Outputs.skipped_images) self.assertEqual(type(skipped), Table) self.assertEqual(len(skipped), len(table)) self.assertTrue(self.widget.Warning.active)
def test_embedder_changed(self): """ We will check whether embedder changes correctly. """ w = self.widget table = load_images() self.assertEqual(w.cb_embedder.currentText(), "Inception v3") self.send_signal(w.Inputs.images, table) cbox = self.widget.controls.cb_embedder_current_id simulate.combobox_activate_index(cbox, 3) self.assertEqual(w.cb_embedder.currentText(), "VGG-19") output = self.get_output(self.widget.Outputs.embeddings) self.assertIsInstance(output, Table) self.assertEqual(len(output), len(table)) # 4096 shows that output is really by VGG-19 self.assertEqual(output.X.shape[1], 4096)