def check_saturated_total(actual): expected = '''[START saturated_total] ('π₯', 5) ('π', 1) ('π ', 8) [END saturated_total]'''.splitlines()[1:-1] assert_matches_stdout(actual, expected)
def check_bounded_total(actual): expected = '''[START bounded_total] ('π₯', 5) ('π', 2) ('π ', 8) [END bounded_total]'''.splitlines()[1:-1] assert_matches_stdout(actual, expected)
def check_largest_elements_per_key(actual): expected = '''[START largest_elements_per_key] ('π₯', [3, 2]) ('π', [1]) ('π ', [5, 4]) [END largest_elements_per_key]'''.splitlines()[1:-1] assert_matches_stdout(actual, expected)
def check_unique_elements(actual): expected = '''[START unique_elements] π₯ π π [END unique_elements]'''.splitlines()[1:-1] assert_matches_stdout(actual, expected)
def check_smallest_elements_per_key(actual): expected = '''[START smallest_elements_per_key] ('π₯', [2, 3]) ('π', [1]) ('π ', [3, 4]) [END smallest_elements_per_key]'''.splitlines()[1:-1] assert_matches_stdout(actual, expected)
def check_perennials(actual): expected = '''[START perennials] {'icon': 'π', 'name': 'Strawberry', 'duration': 'perennial'} {'icon': 'π', 'name': 'Eggplant', 'duration': 'perennial'} {'icon': 'π₯', 'name': 'Potato', 'duration': 'perennial'} [END perennials]'''.splitlines()[1:-1] assert_matches_stdout(actual, expected)
def test_assert_matches_stdout_object(self): expected = [ "{'a': 'π', 'b': True}", "{'a': 'π₯', 'b': 42}", "{'a': 'π', 'b': '\"hello\"'}", "{'a': 'π ', 'b': [1, 2, 3]}", "{'b': 'B', 'a': 'π₯'}", ] with TestPipeline() as pipeline: actual = (pipeline | beam.Create([ { 'a': 'π', 'b': True }, { 'a': 'π₯', 'b': 42 }, { 'a': 'π', 'b': '"hello"' }, { 'a': 'π ', 'b': [1, 2, 3] }, { 'a': 'π₯', 'b': 'B' }, ]) | beam.Map(str)) util.assert_matches_stdout(actual, expected)
def test_assert_matches_stdout_string(self): expected = ['π', 'π₯', 'π', 'π ', 'π₯'] with TestPipeline() as pipeline: actual = (pipeline | beam.Create(['π', 'π₯', 'π', 'π ', 'π₯']) | beam.Map(str)) util.assert_matches_stdout(actual, expected)
def check_elements_with_min_value_per_key(actual): expected = '''[START elements_with_min_value_per_key] ('π₯', 2) ('π', 1) ('π ', 3) [END elements_with_min_value_per_key]'''.splitlines()[1:-1] assert_matches_stdout(actual, expected)
def check_average(actual): expected = '''[START average] ('π₯', 2.5) ('π', 1.0) ('π ', 4.0) [END average]'''.splitlines()[1:-1] assert_matches_stdout(actual, expected)
def check_totals_per_key(actual): expected = '''[START totals_per_key] ('π₯', 5) ('π', 1) ('π ', 12) [END totals_per_key]'''.splitlines()[1:-1] assert_matches_stdout(actual, expected)
def check_percentages_per_season(actual): expected = '''[START percentages_per_season] ('spring', {'π₯': 0.4, 'π ': 0.4, 'π': 0.2}) ('summer', {'π₯': 0.2, 'π ': 0.6, 'π½': 0.2}) ('fall', {'π₯': 0.5, 'π ': 0.5}) ('winter', {'π': 1.0}) [END percentages_per_season]'''.splitlines()[1:-1] assert_matches_stdout(actual, expected)
def check_valid_plants(actual): expected = '''[START valid_plants] {'icon': 'π', 'name': 'Strawberry', 'duration': 'perennial'} {'icon': 'π₯', 'name': 'Carrot', 'duration': 'biennial'} {'icon': 'π', 'name': 'Eggplant', 'duration': 'perennial'} {'icon': 'π ', 'name': 'Tomato', 'duration': 'annual'} [END valid_plants]'''.splitlines()[1:-1] assert_matches_stdout(actual, expected)
def check_latest_elements_per_key(actual): expected = '''[START latest_elements_per_key] ('spring', 'π₯') ('summer', 'π ') ('autumn', 'π') ('winter', 'π₯¬') [END latest_elements_per_key]'''.splitlines()[1:-1] assert_matches_stdout(actual, expected)
def check_total_elements_per_key(actual): expected = '''[START total_elements_per_key] ('spring', 4) ('summer', 3) ('fall', 2) ('winter', 1) [END total_elements_per_key]'''.splitlines()[1:-1] assert_matches_stdout(actual, expected)
def check_shortest_elements_per_key(actual): expected = '''[START shortest_elements_per_key] ('spring', ['π₯ Carrot', 'π Strawberry']) ('summer', ['π½ Corn', 'π₯ Carrot']) ('fall', ['π₯ Carrot', 'π Green apple']) ('winter', ['π Eggplant']) [END shortest_elements_per_key]'''.splitlines()[1:-1] assert_matches_stdout(actual, expected)
def check_all_matches(actual): expected = '''[START plants_all_matches] ['π, Strawberry, perennial', 'π', 'Strawberry', 'perennial'] ['π₯, Carrot, biennial', 'π₯', 'Carrot', 'biennial'] ['π, Eggplant, perennial', 'π', 'Eggplant', 'perennial'] ['π , Tomato, annual', 'π ', 'Tomato', 'annual'] ['π₯, Potato, perennial', 'π₯', 'Potato', 'perennial'] [END plants_all_matches]'''.splitlines()[1:-1] assert_matches_stdout(actual, expected)
def check_plants_csv(actual): expected = '''[START plants_csv] π,Strawberry,perennial π₯,Carrot,biennial π,Eggplant,perennial π ,Tomato,annual π₯,Potato,perennial [END plants_csv]'''.splitlines()[1:-1] assert_matches_stdout(actual, expected)
def check_plant_lists(actual): expected = '''[START plant_lists] ['π', 'Strawberry', 'perennial'] ['π₯', 'Carrot', 'biennial'] ['π', 'Eggplant', 'perennial'] ['π ', 'Tomato', 'annual'] ['π₯', 'Potato', 'perennial'] [END plant_lists]'''.splitlines()[1:-1] assert_matches_stdout(actual, expected)
def check_plants(actual): expected = '''[START plants] π,Strawberry π₯,Carrot π,Eggplant π ,Tomato π₯,Potato [END plants]'''.splitlines()[1:-1] assert_matches_stdout(actual, expected)
def check_plant_timestamps(actual): expected = '''[START plant_timestamps] 2020-04-01 00:00:00 - Strawberry 2020-06-01 00:00:00 - Carrot 2020-03-01 00:00:00 - Artichoke 2020-05-01 00:00:00 - Tomato 2020-09-01 00:00:00 - Potato [END plant_timestamps]'''.splitlines()[1:-1] assert_matches_stdout(actual, expected)
def check_total_unique_elements(actual): expected = '''[START total_unique_elements] ('π', 1) ('π₯', 3) ('π', 2) ('π ', 3) ('π½', 1) [END total_unique_elements]'''.splitlines()[1:-1] assert_matches_stdout(actual, expected)
def check_plant_events(actual): expected = '''[START plant_events] 1 - Strawberry 4 - Carrot 2 - Artichoke 3 - Tomato 5 - Potato [END plant_events]'''.splitlines()[1:-1] assert_matches_stdout(actual, expected)
def check_samples_per_key(actual): expected = '''[START samples_per_key] ('spring', ['π', 'π₯', 'π']) ('summer', ['π₯', 'π ', 'π½']) ('fall', ['π₯', 'π ']) ('winter', ['π']) [END samples_per_key]'''.splitlines()[1:-1] # The sampled elements are non-deterministic, so check the sample size. assert_matches_stdout(actual, expected, lambda pair: (pair[0], len(pair[1])))
def check_plants(actual): expected = '''[START plants] Strawberry Carrot Eggplant Tomato Potato [END plants]'''.splitlines()[1:-1] assert_matches_stdout(actual, expected)
def check_icons(actual): expected = '''[START icons] π π₯ π π π₯ [END icons]'''.splitlines()[1:-1] assert_matches_stdout(actual, expected)
def check_find_all(actual): expected = '''[START plants_find_all] ['π, Strawberry, perennial'] ['π₯, Carrot, biennial'] ['π, Eggplant, perennial', 'π, Banana, perennial'] ['π , Tomato, annual', 'π, Watermelon, annual'] ['π₯, Potato, perennial'] [END plants_find_all]'''.splitlines()[1:-1] assert_matches_stdout(actual, expected)
def check_matches_kv(actual): expected = '''[START plants_matches_kv] ('π', 'π, Strawberry, perennial') ('π₯', 'π₯, Carrot, biennial') ('π', 'π, Eggplant, perennial') ('π ', 'π , Tomato, annual') ('π₯', 'π₯, Potato, perennial') [END plants_matches_kv]'''.splitlines()[1:-1] assert_matches_stdout(actual, expected)
def check_plants(actual): expected = '''[START plants] ('Strawberry', 'π') ('Carrot', 'π₯') ('Eggplant', 'π') ('Tomato', 'π ') ('Potato', 'π₯') [END plants]'''.splitlines()[1:-1] assert_matches_stdout(actual, expected)
def check_replace_first(actual): expected = '''[START plants_replace_first] π: Strawberry, perennial π₯: Carrot, biennial π: Eggplant, perennial π : Tomato, annual π₯: Potato, perennial [END plants_replace_first]'''.splitlines()[1:-1] assert_matches_stdout(actual, expected)