示例#1
0
        public void Execute()
        {
            var languages = new[] {"csharp", "visualbasic", "java", "python", "ruby", "php", "c++"};

            //
            // First拡張メソッドは、シーケンスの最初の要素を返すメソッド。
            //
            // predicateを指定した場合は、その条件に合致する最初の要素が返る。
            //
            Output.WriteLine("============ First ============");
            Output.WriteLine(languages.First());
            Output.WriteLine(languages.First(item => item.StartsWith("v")));

            //
            // Last拡張メソッドは、シーケンスの最後の要素を返すメソッド。
            //
            // predicateを指定した場合は、その条件に合致する最後の要素が返る。
            //
            Output.WriteLine("============ Last ============");
            Output.WriteLine(languages.Last());
            Output.WriteLine(languages.Last(item => item.StartsWith("p")));

            //
            // Single拡張メソッドは、シーケンスの唯一の要素を返すメソッド。
            //
            // Singleを利用する場合、対象となるシーケンスには要素が一つだけ
            // でないといけない。複数の要素が存在する場合例外が発生する。
            //
            // また、空のシーケンスに対してSingleを呼ぶと例外が発生する。
            //
            // predicateを指定した場合は、その条件に合致するシーケンスの唯一の
            // 要素が返される。この場合も、結果のシーケンスには要素が一つだけの
            // 状態である必要がある。条件に合致する要素が複数であると例外が発生する、
            //
            Output.WriteLine("============ Single ============");
            var onlyOne = new[] {"csharp"};
            Output.WriteLine(onlyOne.Single());

            try
            {
                // ReSharper disable once UnusedVariable
                var val = languages.Single();
            }
            catch
            {
                Output.WriteLine("複数の要素が存在する状態でSingleを呼ぶと例外が発生する。");
            }

            Output.WriteLine(languages.Single(item => item.EndsWith("y")));

            try
            {
                // ReSharper disable once UnusedVariable
                var val = languages.Single(item => item.StartsWith("p"));
            }
            catch
            {
                Output.WriteLine("条件に合致する要素が複数存在する場合例外が発生する。");
            }
        }
        public void Append_adds_item_to_end_of_sequence()
        {
            var result = new[] { 1, 2 }.Append(3);

            Assert.Equal(3, result.Count());
            Assert.Equal(1, result.First());
            Assert.Equal(3, result.Last());
        }
        public void Prepend_adds_item_to_beginning_of_sequence()
        {
            var result = new[] { 2, 3 }.Prepend(1);

            Assert.Equal(3, result.Count());
            Assert.Equal(1, result.First());
            Assert.Equal(3, result.Last());
        }
示例#4
0
 public void Should_fill_an_incomplete_set_if_requested()
 {
     var nums = new[] { 1, 2, 3, 4, 5, 6, 7 };
     const int numberInSet = 2;
     const int fillValue = 9;
     var pairs = nums.InSetsOf(numberInSet, true, fillValue).ToArray();
     var last = pairs.Last();
     last.Count.ShouldBeEqualTo(numberInSet);
     last[0].ShouldBeEqualTo(nums.Last());
     last[1].ShouldBeEqualTo(fillValue);
 }
        public void StatementPositionTest()
        {
            const string temp = "Test 123123123 ";
            var strings = new[]
                          {
                          	"<%ruleclass Test%>",   // 0
                          	"<%rule Temp()%>",      // 1
                          	temp + "<%= value %>",  // 2 0, 1
                          	"Pre End Text",         // 3 2
                          	"<%= value %>",         // 4 3
                          	"End Text",             // 5 4
                          	"<%end%>",              // 6
                          };

            const string endLine = "\r\n";
            var statementText = string.Join( endLine, strings );

            var ruleClassStatement = ParserHelper.ParseClass( statementText );

            var textStatement1StartPos = string.Join( endLine, strings.Take(2).ToArray() ).Length + endLine.Length;
            var textStatement1EndPos = textStatement1StartPos + temp.Length - 1;

            var ruleMethodStatement = (RuleMethodStatement)ruleClassStatement.RuleMethodStatements[0];
            AssertHelper.AssertStatementPosition( textStatement1StartPos, textStatement1EndPos,
                                                  ruleMethodStatement.Statements[0].StatementPosition );

            // »звратный подсчЄт, дл¤ UnitTest'а плохой вариант, но так впадлу вручную считать
            AssertHelper.AssertStatementPosition( 3, 3, temp.Length + 1, strings[2].Length, textStatement1EndPos + 1,
                                                  textStatement1EndPos + strings[2].Length - temp.Length,
                                                  ruleMethodStatement.Statements[1].StatementPosition );

            TestText( endLine, strings, 3, 2, ruleMethodStatement.Statements[2].StatementPosition );

            TestText( endLine, strings, 5, 1, ruleMethodStatement.Statements[4].StatementPosition );

            AssertHelper.AssertStatementPosition( 1, strings.Length, 1, strings.Last().Length, 0, statementText.Length - 1,
                                                  ruleClassStatement.StatementPosition );
        }
        public void ReturnsAnEnumerableWithTheAdditionalItemsAtTheEnd()
        {
            var collection = new[] { 1, 2, 3 }.Concat(4);

            Assert.That(collection.Last(), Is.EqualTo(4));
        }
示例#7
0
        private static void ThrowExceptionOnLast1()
        {
            var numbers = new[] { 3, 4 };

            numbers.Last(x => x == 5);
        }