def test_fields_returns_no_fields(): PixelCoordBuilder = dataclass_builder(PixelCoord) fields_ = fields(PixelCoordBuilder(), required=False, optional=False) assert fields_ == PixelCoordBuilder().fields(required=False, optional=False) assert [] == list(fields_.keys()) assert [] == [f.name for f in fields_.values()] assert [] == [f.type for f in fields_.values()] PointBuilder = dataclass_builder(Point) fields_ = fields(PointBuilder(), required=False, optional=False) assert fields_ == PointBuilder().fields(required=False, optional=False) assert [] == list(fields_.keys()) assert [] == [f.name for f in fields_.values()] assert [] == [f.type for f in fields_.values()] CircleBuilder = dataclass_builder(Circle) fields_ = fields(CircleBuilder(), required=False, optional=False) assert fields_ == CircleBuilder().fields(required=False, optional=False) assert [] == list(fields_.keys()) assert [] == [f.name for f in fields_.values()] assert [] == [f.type for f in fields_.values()] TypesBuilder = dataclass_builder(Types) fields_ = fields(TypesBuilder(), required=False, optional=False) assert fields_ == TypesBuilder().fields(required=False, optional=False) assert [] == list(fields_.keys()) assert [] == [f.name for f in fields_.values()] assert [] == [f.type for f in fields_.values()]
def test_fields_returns_required_fields(): PixelCoordBuilder = dataclass_builder(PixelCoord) fields_ = fields(PixelCoordBuilder(), optional=False) assert fields_ == PixelCoordBuilder().fields(optional=False) assert ["x", "y"] == list(fields_.keys()) assert ["x", "y"] == [f.name for f in fields_.values()] assert [int, int] == [f.type for f in fields_.values()] PointBuilder = dataclass_builder(Point) fields_ = fields(PointBuilder(), optional=False) assert fields_ == PointBuilder().fields(optional=False) assert ["x", "y"] == list(fields_.keys()) assert ["x", "y"] == [f.name for f in fields_.values()] assert [float, float] == [f.type for f in fields_.values()] CircleBuilder = dataclass_builder(Circle) fields_ = fields(CircleBuilder(), optional=False) assert fields_ == CircleBuilder().fields(optional=False) assert ["radius"] == list(fields_.keys()) assert ["radius"] == [f.name for f in fields_.values()] assert [float] == [f.type for f in fields_.values()] TypesBuilder = dataclass_builder(Types) fields_ = fields(TypesBuilder(), optional=False) assert fields_ == TypesBuilder().fields(optional=False) assert ["int_", "float_"] == list(fields_.keys()) assert ["int_", "float_"] == [f.name for f in fields_.values()] assert [int, float] == [f.type for f in fields_.values()]
def test_class_inheritance(): builder = ExtendedBuilder(Point, y=4, w=10) builder.x = 8 assert Point(8, 4, 10) == build(builder) fields_ = fields(ExtendedBuilder(Types)) assert ["int_", "float_", "str_"] == list(fields_.keys()) assert ["int_", "float_", "str_"] == [f.name for f in fields_.values()] assert [int, float, str] == [f.type for f in fields_.values()]
def test_fields_field(): FieldsBuilder = dataclass_builder(Fields) builder = FieldsBuilder(fields="taken") assert builder.fields == "taken" fields_ = fields(builder) assert ["fields"] == list(fields_.keys()) assert ["fields"] == [f.name for f in fields_.values()] assert [str] == [f.type for f in fields_.values()]
def test_fields_returns_optional_fields(): fields_ = fields(DataclassBuilder(PixelCoord), required=False) assert [] == list(fields_.keys()) assert [] == [f.name for f in fields_.values()] assert [] == [f.type for f in fields_.values()] fields_ = fields(DataclassBuilder(Point), required=False) assert ["w"] == list(fields_.keys()) assert ["w"] == [f.name for f in fields_.values()] assert [float] == [f.type for f in fields_.values()] fields_ = fields(DataclassBuilder(Circle), required=False) assert [] == list(fields_.keys()) assert [] == [f.name for f in fields_.values()] assert [] == [f.type for f in fields_.values()] fields_ = fields(DataclassBuilder(Types), required=False) assert ["str_"] == list(fields_.keys()) assert ["str_"] == [f.name for f in fields_.values()] assert [str] == [f.type for f in fields_.values()]
def test_fields_returns_required_fields(): fields_ = fields(DataclassBuilder(PixelCoord), optional=False) assert ["x", "y"] == list(fields_.keys()) assert ["x", "y"] == [f.name for f in fields_.values()] assert [int, int] == [f.type for f in fields_.values()] fields_ = fields(DataclassBuilder(Point), optional=False) assert ["x", "y"] == list(fields_.keys()) assert ["x", "y"] == [f.name for f in fields_.values()] assert [float, float] == [f.type for f in fields_.values()] fields_ = fields((DataclassBuilder(Circle)), optional=False) assert ["radius"] == list(fields_.keys()) assert ["radius"] == [f.name for f in fields_.values()] assert [float] == [f.type for f in fields_.values()] fields_ = fields(DataclassBuilder(Types), optional=False) assert ["int_", "float_"] == list(fields_.keys()) assert ["int_", "float_"] == [f.name for f in fields_.values()] assert [int, float] == [f.type for f in fields_.values()]
def test_fields_returns_settable_fields(): fields_ = fields(DataclassBuilder(PixelCoord)) assert ["x", "y"] == list(fields_.keys()) assert ["x", "y"] == [f.name for f in fields_.values()] assert [int, int] == [f.type for f in fields_.values()] fields_ = fields(DataclassBuilder(Point)) assert ["x", "y", "w"] == list(fields_.keys()) assert ["x", "y", "w"] == [f.name for f in fields_.values()] assert [float, float, float] == [f.type for f in fields_.values()] fields_ = fields(DataclassBuilder(Circle)) assert ["radius"] == list(fields_.keys()) assert ["radius"] == [f.name for f in fields_.values()] assert [float] == [f.type for f in fields_.values()] fields_ = fields(DataclassBuilder(Types)) assert ["int_", "float_", "str_"] == list(fields_.keys()) assert ["int_", "float_", "str_"] == [f.name for f in fields_.values()] assert [int, float, str] == [f.type for f in fields_.values()]