Exemple #1
0
    def test_write_json_with_info(self):
        """correctly writes an object with info attribute from json"""
        # create a mock object that pretends like it's been derived from
        # something
        from cogent3.app.result import generic_result

        with TemporaryDirectory(dir=".") as dirname:
            outdir = join(dirname, "delme")

            obj = generic_result(source=join("blah", "delme.json"))
            obj["dna"] = DNA
            writer = io_app.write_json(outdir, create=True)
            _ = writer(obj)
            reader = io_app.load_json()
            got = reader(join(outdir, "delme.json"))
            got.deserialised_values()
            self.assertEqual(got["dna"], DNA)

        # now with a zipped archive
        with TemporaryDirectory(dir=".") as dirname:
            outdir = join(dirname, "delme.zip")
            obj = generic_result(source=join("blah", "delme.json"))
            obj["dna"] = DNA
            writer = io_app.write_json(outdir, create=True)
            identifier = writer(obj)
            reader = io_app.load_json()
            got = reader(writer.data_store[0])
            got.deserialised_values()
            self.assertEqual(got["dna"], DNA)
            expect = join(outdir.replace(".zip", ""), "delme.json")
            if expect.startswith("." + os.sep):
                expect = expect[2:]
            self.assertEqual(identifier, expect)
Exemple #2
0
 def test_keys(self):
     """it works"""
     data = {"type": "cogent3.core.moltype.MolType", "moltype": "dna"}
     result = generic_result(source="blah.json")
     result["key"] = data
     keys = result.keys()
     self.assertEqual(keys, ["key"])
Exemple #3
0
 def test_repr_str(self):
     """it works"""
     data = {"type": "cogent3.core.moltype.MolType", "moltype": "dna"}
     result = generic_result(source="blah.json")
     result["key"] = data
     r = repr(result)
     s = str(result)
Exemple #4
0
    def test_roundtrip_tuple_key(self):
        """deserialise_result handles tuples as keys"""
        from cogent3.app.result import generic_result

        r = generic_result(source="none")
        r[(1, 2)] = 24
        got = deserialise_object(r.to_json())
        self.assertEqual(got[(1, 2)], 24)
Exemple #5
0
    def test_deserialised_values(self):
        """correctly deserialises values"""
        from cogent3 import DNA

        data = {"type": "cogent3.core.moltype.MolType", "moltype": "dna"}
        result = generic_result(source="blah.json")
        result["key"] = data
        result.deserialised_values()
        got = result["key"]
        self.assertEqual(got, DNA)
        # if we have a type value without "cogent3", leaves as is
        data = {"type": "core.moltype.MolType", "moltype": "dna"}
        result = generic_result(source="blah.json")
        result["key"] = data
        result.deserialised_values()
        got = result["key"]
        self.assertEqual(got, data)
        # or if no "type" entry, leaves as is
        data = {"moltype": "dna"}
        result = generic_result(source="blah.json")
        result["key"] = data
        result.deserialised_values()
        got = result["key"]
        self.assertEqual(got, data)
Exemple #6
0
    def test_write_json_with_info(self):
        """correctly writes an object with info attribute from json"""
        # create a mock object that pretends like it's been derived from
        # something
        from cogent3.app.result import generic_result

        with TemporaryDirectory(dir=".") as dirname:
            outdir = join(dirname, "delme")

            obj = generic_result(source=join("blah", "delme.json"))
            obj["dna"] = DNA
            writer = io_app.write_json(outdir, create=True)
            _ = writer(obj)
            reader = io_app.load_json()
            got = reader(join(outdir, "delme.json"))
            got.deserialised_values()
            self.assertEqual(got["dna"], DNA)
Exemple #7
0
def _get_generic_result(source):
    """creates a generic result with a DNA moltype as the single value"""
    gr = generic_result(source=source)
    gr["dna"] = DNA
    return gr
Exemple #8
0
 def test_invalid_setitem(self):
     """generic_result raise TypeError if trying to set invalid item type for json"""
     gr = generic_result("null")
     with self.assertRaises(TypeError):
         gr["null"] = {0, 23}