예제 #1
0
def test_compile_duplicate_names(parse):
    enum_ast = parse('enum DupeEnum { A, B, A }')

    with pytest.raises(ThriftCompilerError) as exc_info:
        EnumTypeSpec.compile(enum_ast)

    assert 'DupeEnum.A' in str(exc_info)
    assert 'has duplicates' in str(exc_info)
예제 #2
0
def test_compile_duplicate_names(parse):
    enum_ast = parse('enum DupeEnum { A, B, A }')

    with pytest.raises(ThriftCompilerError) as exc_info:
        EnumTypeSpec.compile(enum_ast)

    assert 'DupeEnum.A' in str(exc_info)
    assert 'has duplicates' in str(exc_info)
예제 #3
0
def test_compile_values_collide(parse):
    enum_ast = parse('enum Foo { A, B, C = 0, D }')
    spec = EnumTypeSpec.compile(enum_ast)

    assert spec.items == {'A': 0, 'B': 1, 'C': 0, 'D': 1}
    assert set(spec.values_to_names[0]) == set(['A', 'C'])
    assert set(spec.values_to_names[1]) == set(['B', 'D'])
예제 #4
0
def test_compile_values_collide(parse):
    enum_ast = parse('enum Foo { A, B, C = 0, D }')
    spec = EnumTypeSpec.compile(enum_ast)

    assert spec.items == {'A': 0, 'B': 1, 'C': 0, 'D': 1}
    assert set(spec.values_to_names[0]) == set(['A', 'C'])
    assert set(spec.values_to_names[1]) == set(['B', 'D'])
예제 #5
0
def test_compile_implicit_and_explicit_values(parse):
    enum_ast = parse('enum CombinationEnum { A = 1, B, C = 5, D, E }')

    spec = EnumTypeSpec.compile(enum_ast)
    assert spec.name == 'CombinationEnum'
    assert spec.items == {'A': 1, 'B': 2, 'C': 5, 'D': 6, 'E': 7}
예제 #6
0
def test_compile_explicit_values(parse):
    enum_ast = parse('enum ExplicitEnum { A = 1, B = 5, C = 3 }')

    spec = EnumTypeSpec.compile(enum_ast)
    assert spec.name == 'ExplicitEnum'
    assert spec.items == {'A': 1, 'B': 5, 'C': 3}
예제 #7
0
def test_compile_implicit_values(parse):
    enum_ast = parse('enum ImplicitEnum { A, B, C }')

    spec = EnumTypeSpec.compile(enum_ast)
    assert spec.name == 'ImplicitEnum'
    assert spec.items == {'A': 0, 'B': 1, 'C': 2}
예제 #8
0
def test_compile_implicit_and_explicit_values(parse):
    enum_ast = parse('enum CombinationEnum { A = 1, B, C = 5, D, E }')

    spec = EnumTypeSpec.compile(enum_ast)
    assert spec.name == 'CombinationEnum'
    assert spec.items == {'A': 1, 'B': 2, 'C': 5, 'D': 6, 'E': 7}
예제 #9
0
def test_compile_explicit_values(parse):
    enum_ast = parse('enum ExplicitEnum { A = 1, B = 5, C = 3 }')

    spec = EnumTypeSpec.compile(enum_ast)
    assert spec.name == 'ExplicitEnum'
    assert spec.items == {'A': 1, 'B': 5, 'C': 3}
예제 #10
0
def test_compile_implicit_values(parse):
    enum_ast = parse('enum ImplicitEnum { A, B, C }')

    spec = EnumTypeSpec.compile(enum_ast)
    assert spec.name == 'ImplicitEnum'
    assert spec.items == {'A': 0, 'B': 1, 'C': 2}