public void Y2020_Day20_GetCornerTileIdProduct_Returns_Correct_Value() { // Arrange string[] input = new[] { "Tile 2311:", "..##.#..#.", "##..#.....", "#...##..#.", "####.#...#", "##.##.###.", "##...#.###", ".#.#.#..##", "..#....#..", "###...#.#.", "..###..###", string.Empty, "Tile 1951:", "#.##...##.", "#.####...#", ".....#..##", "#...######", ".##.#....#", ".###.#####", "###.##.##.", ".###....#.", "..#.#..#.#", "#...##.#..", string.Empty, "Tile 1171:", "####...##.", "#..##.#..#", "##.#..#.#.", ".###.####.", "..###.####", ".##....##.", ".#...####.", "#.##.####.", "####..#...", ".....##...", string.Empty, "Tile 1427:", "###.##.#..", ".#..#.##..", ".#.##.#..#", "#.#.#.##.#", "....#...##", "...##..##.", "...#.#####", ".#.####.#.", "..#..###.#", "..##.#..#.", string.Empty, "Tile 1489:", "##.#.#....", "..##...#..", ".##..##...", "..#...#...", "#####...#.", "#..#.#.#.#", "...#.#.#..", "##.#...##.", "..##.##.##", "###.##.#..", string.Empty, "Tile 2473:", "#....####.", "#..#.##...", "#.##..#...", "######.#.#", ".#...#.#.#", ".#########", ".###.#..#.", "########.#", "##...##.#.", "..###.#.#.", string.Empty, "Tile 2971:", "..#.#....#", "#...###...", "#.#.###...", "##.##..#..", ".#####..##", ".#..####.#", "#..#.#..#.", "..####.###", "..#.#.###.", "...#.#.#.#", string.Empty, "Tile 2729:", "...#.#.#.#", "####.#....", "..#.#.....", "....#..#.#", ".##..##.#.", ".#.####...", "####.#.#..", "##.####...", "##..#.##..", "#.##...##.", string.Empty, "Tile 3079:", "#.#.#####.", ".#..######", "..#.......", "######....", "####.#..#.", ".#...#.##.", "#.#####.##", "..#.###...", "..#.......", "..#.###...", string.Empty, }; // Act (long actualCornerIdProduct, int actualRoughness, _) = Day20.GetCornerTileIdProduct(input, Logger); // Assert actualCornerIdProduct.ShouldBe(20899048083289L); actualRoughness.ShouldBe(273); }