Ejemplo n.º 1
0
 def test_references(self):
     string_constant_1 = 'string constant 1'
     reference_1 = TypeWithStrRenderingSymbolReference(
         'symbol_1_name', is_any_type_w_str_rendering())
     reference_2 = TypeWithStrRenderingSymbolReference(
         'symbol_2_name', OrReferenceRestrictions([]))
     cases = [
         (
             'no fragments',
             sut.StringSdv(()),
             asrt.is_empty_sequence,
         ),
         (
             'single string constant fragment',
             sut.StringSdv((impl.ConstantStringFragmentSdv(' value'), )),
             asrt.is_empty_sequence,
         ),
         (
             'multiple fragments of different types',
             sut.StringSdv((
                 impl.SymbolStringFragmentSdv(reference_1.reference),
                 impl.ConstantStringFragmentSdv(string_constant_1),
                 impl.SymbolStringFragmentSdv(reference_2.reference),
             )),
             asrt.matches_sequence([
                 reference_1.reference_assertion,
                 reference_2.reference_assertion,
             ]),
         ),
     ]
     for test_name, string_sdv, expected_references_assertion in cases:
         with self.subTest(test_name=test_name):
             actual = string_sdv.references
             expected_references_assertion.apply_without_message(
                 self, actual)
Ejemplo n.º 2
0
    def test(self):
        untransformed = impl.ConstantStringFragmentSdv('constant')
        expected = impl.ConstantStringFragmentSdv('CONSTANT')
        actual = impl.TransformedStringFragmentSdv(untransformed, str.upper)

        equals_string_fragment_sdv(expected).apply_without_message(
            self, actual)
Ejemplo n.º 3
0
class TestConstantStringFragmentResolver(unittest.TestCase):
    string_constant = 'string constant'
    fragment = impl.ConstantStringFragmentSdv(string_constant)

    def test_should_be_string_constant(self):
        self.assertTrue(self.fragment.is_string_constant)

    def test_should_have_no_references(self):
        self.assertEqual((), self.fragment.references)

    def test_string_constant(self):
        string_constant = 'string constant'
        fragment = impl.ConstantStringFragmentSdv(string_constant)
        self.assertEqual(string_constant, fragment.string_constant)

    def test_resolve_should_give_string_constant(self):
        # ARRANGE #
        string_constant = 'string constant'
        fragment = impl.ConstantStringFragmentSdv(string_constant)
        # ACT #
        actual = fragment.resolve(empty_symbol_table())
        # ASSERT #
        assertion = equals_string_fragment_ddv(
            csv.ConstantFragmentDdv(string_constant))
        assertion.apply_without_message(self, actual)
Ejemplo n.º 4
0
 def test_resolve_should_give_string_constant(self):
     # ARRANGE #
     string_constant = 'string constant'
     fragment = impl.ConstantStringFragmentSdv(string_constant)
     # ACT #
     actual = fragment.resolve(empty_symbol_table())
     # ASSERT #
     assertion = equals_string_fragment_ddv(
         csv.ConstantFragmentDdv(string_constant))
     assertion.apply_without_message(self, actual)
Ejemplo n.º 5
0
 def test_fragments(self):
     # ARRANGE #
     fragment_1 = impl.ConstantStringFragmentSdv('fragment 1 value')
     fragment_2 = impl.SymbolStringFragmentSdv(
         data_references.reference_to__on_direct_and_indirect(
             'symbol_name'))
     sdv = sut.StringSdv((fragment_1, fragment_2))
     # ACT #
     actual = sdv.fragments
     # ASSERT #
     assertion = equals_string_fragments([fragment_1, fragment_2])
     assertion.apply_without_message(self, actual)
Ejemplo n.º 6
0
 def test_string_constant(self):
     string_constant = 'string constant'
     fragment = impl.ConstantStringFragmentSdv(string_constant)
     self.assertEqual(string_constant, fragment.string_constant)
Ejemplo n.º 7
0
def sdv_with_single_constant_fragment(fragment_value: str) -> sut.StringSdv:
    return sut.StringSdv((impl.ConstantStringFragmentSdv(fragment_value), ))
Ejemplo n.º 8
0
    def test_resolve(self):
        string_constant_1 = 'string constant 1'
        string_constant_2 = 'string constant 2'
        string_symbol = StringConstantSymbolContext('string_symbol_name',
                                                    'string symbol value')
        path_symbol = ConstantSuffixPathDdvSymbolContext(
            'path_symbol_name', RelOptionType.REL_ACT, 'file-name')
        list_symbol = ListConstantSymbolContext(
            'list_symbol_name', ['list element 1', 'list element 2'])

        cases = [
            (
                'no fragments',
                sut.StringSdv(()),
                empty_symbol_table(),
                csv.StringDdv(()),
            ),
            (
                'single string constant fragment',
                sut.StringSdv(
                    (impl.ConstantStringFragmentSdv(string_constant_1), )),
                empty_symbol_table(),
                csv.StringDdv((csv.ConstantFragmentDdv(string_constant_1), )),
            ),
            (
                'multiple single string constant fragments',
                sut.StringSdv(
                    (impl.ConstantStringFragmentSdv(string_constant_1),
                     impl.ConstantStringFragmentSdv(string_constant_2))),
                empty_symbol_table(),
                csv.StringDdv((csv.ConstantFragmentDdv(string_constant_1),
                               csv.ConstantFragmentDdv(string_constant_2))),
            ),
            (
                'single symbol fragment/symbol is a string',
                sut.StringSdv((impl.SymbolStringFragmentSdv(
                    string_symbol.reference__w_str_rendering), )),
                string_symbol.symbol_table,
                csv.StringDdv(
                    (csv.ConstantFragmentDdv(string_symbol.str_value), )),
            ),
            (
                'single symbol fragment/symbol is a path',
                sut.StringSdv((impl.SymbolStringFragmentSdv(
                    path_symbol.reference__w_str_rendering), )),
                path_symbol.symbol_table,
                csv.StringDdv((csv.PathFragmentDdv(path_symbol.ddv), )),
            ),
            (
                'single symbol fragment/symbol is a list',
                sut.StringSdv((impl.SymbolStringFragmentSdv(
                    list_symbol.reference__w_str_rendering), )),
                list_symbol.symbol_table,
                csv.StringDdv((csv.ListFragmentDdv(list_symbol.ddv), )),
            ),
            (
                'multiple fragments of different types',
                sut.StringSdv((
                    impl.SymbolStringFragmentSdv(
                        string_symbol.reference__w_str_rendering),
                    impl.ConstantStringFragmentSdv(string_constant_1),
                    impl.SymbolStringFragmentSdv(
                        path_symbol.reference__w_str_rendering),
                    impl.SymbolStringFragmentSdv(
                        list_symbol.reference__w_str_rendering),
                )),
                SymbolContext.symbol_table_of_contexts([
                    string_symbol,
                    path_symbol,
                    list_symbol,
                ]),
                csv.StringDdv((
                    csv.ConstantFragmentDdv(string_symbol.str_value),
                    csv.ConstantFragmentDdv(string_constant_1),
                    csv.PathFragmentDdv(path_symbol.ddv),
                    csv.ListFragmentDdv(list_symbol.ddv),
                )),
            ),
        ]
        for test_name, string_value, symbol_table, expected in cases:
            with self.subTest(test_name=test_name):
                actual = string_value.resolve(symbol_table)
                assertion = equals_string_ddv(expected)
                assertion.apply_without_message(self, actual)
Ejemplo n.º 9
0
def str_fragment(constant: str) -> StringFragmentSdv:
    return _impl.ConstantStringFragmentSdv(constant)