Exemplo n.º 1
0
        public async Task Handle(ReadDatasetVerb verb)
        {
            if (!StringExists(verb.Id))
            {
                logger.Log("use --id <id> to choose a dataset");
                return;
            }
            var dataset = await datasetService.Get <EmptyDataset>(verb.Id);

            if (DatasetTypes.Empty.Equals(dataset.Type))
            {
                // emtpy set
                logger.Log($"{dataset.Id} is an empty dataset");
            }
            else if (DatasetTypes.SingleClassImage.Equals(dataset.Type))
            {
                var resolved = await resolverService.ResolveSingleClassImage(dataset);

                logger.Log($"{resolved.Id} is of type {resolved.Type}");
                logger.Log($"There are {resolved.LabelledImages.Count()} images in the set");
                var labelCount = resolved.LabelledImages.Select(i => i.Label).Distinct().Count();
                logger.Log($"There are {labelCount} labels");

                if (StringExists(verb.Output))
                {
                    var json = JsonConvert.SerializeObject(resolved);
                    File.WriteAllText(verb.Output + "/" + verb.Id + ".json", json);
                }
            }
            else
            {
                logger.Log($"{dataset.Type} is an unknown type");
            }
        }
Exemplo n.º 2
0
        public async Task Dataset_InMemoryCRUD()
        {
            var id             = "ANewId";
            var logger         = (TestLogger)Resolve <ILogger>();
            var datasetService = Resolve <IDatasetService>();
            var createHandler  = Resolve <ICreateDatasetHandler>();
            var readHandler    = Resolve <IReadDatasetHandler>();
            var updateHandler  = Resolve <IUpdateDatasetHandler>();
            var deleteHandler  = Resolve <IDeleteDatasetHandler>();

            // create
            var createVerb = new CreateDatasetVerb();

            createVerb.Id = id;
            createHandler.Handle(createVerb).Wait();
            var ds = await datasetService.Get <EmptyDataset>(id);

            Assert.IsNotNull(ds);
            Assert.AreEqual(ds.Id, id);
            Assert.AreEqual(ds.Type.Value, DatasetTypes.Empty.Value);

            // update inline
            var updateVerb = new UpdateDatasetVerb();

            updateVerb.Id    = id;
            updateVerb.Label = "ALabel";
            updateVerb.Type  = DatasetTypes.SingleClassImage.Value;
            updateVerb.Url   = "http://example.com/pcture.jpeg";
            updateHandler.Handle(updateVerb).Wait();
            var singleClassDs = await datasetService.Get <SingleClassImageDataset>(id);

            Assert.IsNotNull(singleClassDs);
            Assert.AreEqual(singleClassDs.Id, id);
            Assert.AreEqual(singleClassDs.Type.Value, DatasetTypes.SingleClassImage.Value);

            // read the data
            var readVerb = new ReadDatasetVerb();

            readVerb.Id = id;
            readHandler.Handle(readVerb).Wait();
            Assert.IsTrue(logger.Messages.Any(m => m.Contains($"{id} is of type {DatasetTypes.SingleClassImage.Value}")));
            Assert.IsTrue(logger.Messages.Any(m => m.Contains($"1")));

            // delete the dataset
            var deleteVerb = new DeleteDatasetVerb();

            deleteVerb.Id = createVerb.Id;

            deleteHandler.Handle(deleteVerb).Wait();

            await Assert.ThrowsExceptionAsync <DatasetNotFoundException>(() => datasetService.Get <EmptyDataset>(createVerb.Id));
        }