Exemplo n.º 1
0
        public void Time_hidden_by_group_is_equivalent_to_dashes()
        {
            var actual = MultiCharMarbleParser.ParseSequence("(a,b)");

            actual.Select(m => m.Time).Should().Equal(0, 1, 2, 3, 4);
            actual.Select(m => string.Join("+", m.Marbles)).Should().Equal("a+b", "", "", "", "");
        }
Exemplo n.º 2
0
        public void Should_return_empty_moment_for_dash()
        {
            var actual = MultiCharMarbleParser.ParseSequence("-");

            actual.Should().HaveCount(1);
            actual.First().Marbles.Should().BeEmpty();
        }
Exemplo n.º 3
0
        public void Time_hidden_by_multichar_marble_is_equivalent_to_dashes()
        {
            var actual = MultiCharMarbleParser.ParseSequence("abc");

            actual.Select(m => string.Join("+", m.Marbles)).Should().Equal("abc", "", "");
            actual.Select(m => m.Time).Should().Equal(0, 1, 2);
        }
Exemplo n.º 4
0
        public void Supports_multiple_groups(string sequence, params string[] flattenedMoments)
        {
            var actual = MultiCharMarbleParser.ParseSequence(sequence);

            FlattenMoments(actual).Should().Equal(flattenedMoments);
            actual.Select(m => m.Time).Should().Equal(Enumerable.Range(0, flattenedMoments.Length));
        }
Exemplo n.º 5
0
        public void Should_take_moment_of_circumflex_as_0_time()
        {
            var actual = MultiCharMarbleParser.ParseSequence("a-c^d-f");

            actual.First().Time.Should().Be(-3);
            actual.Skip(3).First().Time.Should().Be(0);
            actual.Skip(3).First().Marbles.Should().Equal("^");
        }
Exemplo n.º 6
0
        public void Start_at_beginning_behaves_like_normal_marble()
        {
            var actual = MultiCharMarbleParser.ParseSequence("^");

            actual.Should().HaveCount(1);
            actual.Single().Time.Should().Be(0);
            actual.Single().Marbles.Should().Equal("^");
        }
Exemplo n.º 7
0
        public void Not_leading_or_trailing_spaces_are_equivalent_to_dashes()
        {
            var actual   = MultiCharMarbleParser.ParseSequence("a b  c -  (de gh)   f-");
            var expected = MultiCharMarbleParser.ParseSequence("a-b--c----(de gh)---f-");

            actual.Select(m => m.Time).Should().Equal(expected.Select(m => m.Time));
            actual.Select(m => string.Join("+", m.Marbles)).Should().Equal(expected.Select(m => string.Join("+", m.Marbles)));
        }
Exemplo n.º 8
0
        public void Leading_and_trailing_spaces_are_ignored()
        {
            var actual   = MultiCharMarbleParser.ParseSequence("   a--b   ");
            var expected = MultiCharMarbleParser.ParseSequence("a--b");

            actual.Select(m => m.Time).Should().Equal(expected.Select(m => m.Time));
            actual.Select(m => string.Join("+", m.Marbles)).Should().Equal(expected.Select(m => string.Join("+", m.Marbles)));
        }
Exemplo n.º 9
0
        public void Supports_group_in_middle(string sequence)
        {
            var actual = MultiCharMarbleParser.ParseSequence(sequence);

            actual.Take(3).Select(m => string.Join("+", m.Marbles)).Should().Equal("a", "", "cx+dx");
            actual.Take(3).Select(m => m.Time).Should().Equal(0, 1, 2);
            actual.Last().Marbles.Should().Equal("f");
            actual.Last().Time.Should().Be(sequence.Length - 1);
        }
Exemplo n.º 10
0
        internal void Should_take_moment_of_group_start_as_0_time(string inputSequence, Moment.MomentType expectedMomentType)
        {
            var actual = MultiCharMarbleParser.ParseSequence(inputSequence);

            actual.First().Time.Should().Be(-2);
            var moment = actual.Skip(2).First();

            moment.Type.Should().Be(expectedMomentType);
            moment.Time.Should().Be(0);
        }
Exemplo n.º 11
0
        public void Should_return_one_marble_per_timeslot()
        {
            var actual = MultiCharMarbleParser.ParseSequence("a-b-c");

            actual.Select(m => m.Marbles.Length).Should().Equal(1, 0, 1, 0, 1);
        }
Exemplo n.º 12
0
        public void Should_use_single_moment_for_all_grouped_marbles_when_separated_by_space()
        {
            var actual = MultiCharMarbleParser.ParseSequence("(ab c)");

            actual.First().Marbles.Should().Equal("ab", "c");
        }
Exemplo n.º 13
0
        public void Should_use_single_moment_for_all_grouped_marbles()
        {
            var actual = MultiCharMarbleParser.ParseSequence("(a,b,c)");

            actual.First().Marbles.Should().Equal("a", "b", "c");
        }
Exemplo n.º 14
0
        public void Should_have_time_increasing_from_0()
        {
            var actual = MultiCharMarbleParser.ParseSequence("a-c");

            actual.Select(m => m.Time).Should().Equal(0, 1, 2);
        }
Exemplo n.º 15
0
        public void Supports_space_comma_and_circumflex_separated_groups(string sequence, params string[] expectedMarbles)
        {
            var actual = MultiCharMarbleParser.ParseSequence(sequence);

            actual.First().Marbles.Should().Equal(expectedMarbles);
        }
Exemplo n.º 16
0
        public void Glued_characters_form_single_marble()
        {
            var actual = MultiCharMarbleParser.ParseSequence("abc");

            actual.First().Marbles.Should().Equal("abc");
        }
Exemplo n.º 17
0
        public void Should_throw_ArgumentException_when_passing_comma_outside_group(string marbleLine)
        {
            Action parsingNull = () => MultiCharMarbleParser.ParseSequence(marbleLine);

            parsingNull.Should().Throw <ArgumentException>();
        }
Exemplo n.º 18
0
        public void Should_throw_ArgumentException_when_nesting_groups_braces(string marbleLine)
        {
            Action parsingNull = () => MultiCharMarbleParser.ParseSequence(marbleLine);

            parsingNull.Should().Throw <ArgumentException>();
        }
Exemplo n.º 19
0
        public void Should_throw_ArgumentException_when_passing_null()
        {
            Action parsingNull = () => MultiCharMarbleParser.ParseSequence(null);

            parsingNull.Should().Throw <ArgumentNullException>();
        }
Exemplo n.º 20
0
        public void Should_throw_ArgumentException_when_having_single_element_or_empty_groups(string marbleLine)
        {
            Action parsingNull = () => MultiCharMarbleParser.ParseSequence(marbleLine);

            parsingNull.Should().Throw <ArgumentException>();
        }
Exemplo n.º 21
0
        public void Should_return_correct_marble_per_timeslot()
        {
            var actual = MultiCharMarbleParser.ParseSequence("a-b-c");

            actual.Select(m => m.Marbles.FirstOrDefault()).Should().Equal("a", null, "b", null, "c");
        }
Exemplo n.º 22
0
        public void Should_throw_ArgumentException_when_passing_two_starters(string marbleLine)
        {
            Action parsingNull = () => MultiCharMarbleParser.ParseSequence(marbleLine);

            parsingNull.Should().Throw <ArgumentException>();
        }
Exemplo n.º 23
0
        public void Should_accept_empty_string()
        {
            var actual = MultiCharMarbleParser.ParseSequence(string.Empty);

            actual.Should().BeEmpty();
        }