Ejemplo n.º 1
0
def test_fake_base_serialization() -> None:
    fake_model = FakeModel(foo="bar")

    serialized = operations.serialize(fake_model)
    deserialized = operations.deserialize(serialized)

    assert fake_model.get_id() == deserialized.get_id()
Ejemplo n.º 2
0
    def test_serialize(self, base):
        serialized = operations.serialize(base)
        deserialized = operations.deserialize(serialized)

        assert base.get_id() == deserialized.get_id()
        assert base.units == "mm"
        assert isinstance(base.test_bases[0], Base)
        assert base["@detach"].name == deserialized["@detach"].name
Ejemplo n.º 3
0
    def test_serialize(self, base):
        serialized = operations.serialize(base)
        deserialized = operations.deserialize(serialized)

        assert base.get_id() == deserialized.get_id()
        assert base.units == "mm"
        assert isinstance(base.test_bases[0], Base)
        assert base["@revit_thing"].speckle_type == "SpecialRevitFamily"
        assert base["@detach"].name == deserialized["@detach"].name
Ejemplo n.º 4
0
    def test_detaching(self, mesh):
        transport = MemoryTransport()
        serialized = operations.serialize(mesh, [transport])
        deserialized = operations.deserialize(serialized, transport)

        serialized_dict = json.loads(serialized)

        assert serialized_dict["detach_this"]["speckle_type"] == "reference"
        assert serialized_dict["@detach"]["speckle_type"] == "reference"
        assert serialized_dict["origin"]["speckle_type"] == "reference"
        assert serialized_dict["@detached_list"][-1]["speckle_type"] == "reference"
        assert mesh.get_id() == deserialized.get_id()
Ejemplo n.º 5
0
    def test_chunking(self, mesh):
        transport = MemoryTransport()
        serialized = operations.serialize(mesh, [transport])
        deserialized = operations.deserialize(serialized, transport)

        serialized_dict = json.loads(serialized)

        assert len(serialized_dict["vertices"]) == 3
        assert len(serialized_dict["@(100)colours"]) == 3
        assert len(serialized_dict["@()default_chunk"]) == 1
        assert serialized_dict["vertices"][0]["speckle_type"] == "reference"
        assert serialized_dict["@(100)colours"][0]["speckle_type"] == "reference"
        assert serialized_dict["@()default_chunk"][0]["speckle_type"] == "reference"
        assert mesh.get_id() == deserialized.get_id()
Ejemplo n.º 6
0
def test_transform_serialisation(transform: Transform):
    serialized = operations.serialize(transform)
    deserialized = operations.deserialize(serialized)

    assert transform.get_id() == deserialized.get_id()
Ejemplo n.º 7
0
    def test_big_int(self):
        big_int = '{"big": ' + str(2 ** 64) + "}"
        deserialised = operations.deserialize(big_int)

        assert deserialised == {"big": 2 ** 64}
Ejemplo n.º 8
0
    def test_no_speckle_type(self):
        untyped = '{"foo": "bar"}'
        deserialised = operations.deserialize(untyped)

        assert deserialised == {"foo": "bar"}
Ejemplo n.º 9
0
    def test_unknown_type(self):
        unknown = '{"speckle_type": "mysterious.type"}'
        deserialised = operations.deserialize(unknown)

        assert isinstance(deserialised, Base)
        assert deserialised.speckle_type == "mysterious.type"
Ejemplo n.º 10
0
class SpeckleSub(ExampleSub, speckle_type="custom_speckle_sub"):
    """
    Example custom type name registration.

    This is an optional feature.
    The default value of the speckle_type is generated from the name of the class, but
    optionally it may be overridden. This is useful, since the speckle_type has to be
    unique for each subclass of speckle Base.
    """

    magic: str = "trick"


if __name__ == "__main__":
    # example usage
    custom_sub = SpeckleSub(
        foo=123,
        magic="trick",
        bar="baric",
        extra=123,
    )
    # support for dynamic attributes
    custom_sub.extra_extra = "what is this?"
    debug(custom_sub.json())

    serialized = operations.serialize(custom_sub)
    deserialized = operations.deserialize(serialized)
    # the only difference should be between the two data is that the deserialized
    # instance id attribute is not None.
    debug(deserialized.json())