Exemplo n.º 1
0
def test_child_can_call_other_specs_on_prototype():
    s = SpecificationMapper()
    s.define_specification_for('bar',
                               lambda t, d: t.specification_for('foo') + 1)
    s2 = s.new_child_mapper()
    s2.define_specification_for('foo', const(1))
    assert s2.specification_for('bar') == 2
Exemplo n.º 2
0
def test_can_override_in_children():
    sm = SpecificationMapper()
    child = sm.new_child_mapper()
    sm.define_specification_for('foo', const(1))
    child.define_specification_for('foo', const(2))
    assert sm.specification_for('foo') == 1
    assert child.specification_for('foo') == 2
Exemplo n.º 3
0
def test_correctly_reports_specifications():
    mapper = SpecificationMapper()
    mapper.define_specification_for_instances(
        list, lambda s, d: s.specification_for(d[0]) + 1 if d else 0)
    mapper.define_specification_for(int, const(1))
    assert mapper.has_specification_for(int)
    assert mapper.has_specification_for([int])
    assert mapper.has_specification_for([])
    assert not mapper.has_specification_for(str)
    assert not mapper.has_specification_for([str])
Exemplo n.º 4
0
def test_can_create_children():
    sm = SpecificationMapper()
    child = sm.new_child_mapper()
    sm.define_specification_for('foo', const(1))
    assert child.specification_for('foo') == 1
Exemplo n.º 5
0
def test_can_define_specifications_for_built_in_types():
    sm = SpecificationMapper()
    sm.define_specification_for(Bar, const(1))
    assert sm.specification_for(Bar) == 1
Exemplo n.º 6
0
def test_invokes_missing_if_all_handlers_defer():
    s = SpecificationMapper()
    s.define_specification_for(int, lambda ss, d: next_in_chain())
    s.missing_specification = lambda d: 11
    assert s.specification_for(int) == 11
Exemplo n.º 7
0
def test_can_define_specifications():
    sm = SpecificationMapper()
    sm.define_specification_for('foo', const(1))
    assert sm.specification_for('foo') == 1
Exemplo n.º 8
0
def test_can_override_specifications():
    s = SpecificationMapper()
    s.define_specification_for('foo', const(1))
    s.define_specification_for('foo', const(2))
    assert s.specification_for('foo') == 2
Exemplo n.º 9
0
def test_can_call_other_specs():
    s = SpecificationMapper()
    s.define_specification_for('foo', const(1))
    s.define_specification_for('bar',
                               lambda t, _: t.specification_for('foo') + 1)
    assert s.specification_for('bar') == 2