/
ContainsChainedSyntaxTests.cs
112 lines (99 loc) · 5.18 KB
/
ContainsChainedSyntaxTests.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
// --------------------------------------------------------------------------------------------------------------------
// <copyright file="ContainsChainedSyntaxTests.cs" company="">
// Copyright 2013 Cyrille DUPUYDAUBY
// // // Licensed under the Apache License, Version 2.0 (the "License");
// // // you may not use this file except in compliance with the License.
// // // You may obtain a copy of the License at
// // // http://www.apache.org/licenses/LICENSE-2.0
// // // Unless required by applicable law or agreed to in writing, software
// // // distributed under the License is distributed on an "AS IS" BASIS,
// // // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// // // See the License for the specific language governing permissions and
// // // limitations under the License.
// </copyright>
// <summary>
//
// </summary>
// --------------------------------------------------------------------------------------------------------------------
using System;
namespace NFluent.Tests
{
using NUnit.Framework;
[TestFixture]
public class ContainsChainedSyntaxTests
{
private readonly string[] tresAmigos = new[] { "un", "dos", "tres" };
[Test]
public void IsOnlyMadeOfSucessTest()
{
Check.That(this.tresAmigos).Contains("dos", "un", "tres").Only();
}
[Test]
public void ContainsInThatOrderSucessTest()
{
Check.That(this.tresAmigos).Contains("un", "dos").InThatOrder();
Check.That(this.tresAmigos).Contains("un", "dos", "tres").InThatOrder();
Check.That(this.tresAmigos).Contains("un", "un", "dos", "tres").InThatOrder();
Check.That(this.tresAmigos).Contains("dos", "tres").InThatOrder();
}
[Test]
public void ContainsInThatOrderFails()
{
var tresAmigosAndMore = new[] { "un", "dos", "un", "tres" };
Check.ThatCode(() =>
{
Check.That(tresAmigosAndMore).Contains(this.tresAmigos).InThatOrder();
})
.Throws<FluentCheckException>()
.WithMessage(Environment.NewLine+ "The checked enumerable does not follow to the expected order. Item [\"un\"] appears too late in the list, at index '2'." + Environment.NewLine + "The checked enumerable:" + Environment.NewLine + "\t[\"un\", \"dos\", \"un\", \"tres\"]" + Environment.NewLine + "The expected value(s):" + Environment.NewLine + "\t[\"un\", \"dos\", \"tres\"]");
}
[Test]
public void ContainsInThatOrderFails2()
{
Check.ThatCode(() =>
{
Check.That(this.tresAmigos).Contains("dos", "un", "tres").InThatOrder();
})
.Throws<FluentCheckException>()
.WithMessage(Environment.NewLine+ "The checked enumerable does not follow to the expected order. Item [\"dos\"] appears too late in the list, at index '1'." + Environment.NewLine + "The checked enumerable:" + Environment.NewLine + "\t[\"un\", \"dos\", \"tres\"]" + Environment.NewLine + "The expected value(s):" + Environment.NewLine + "\t[\"dos\", \"un\", \"tres\"]");
}
[Test]
public void ContainsInThatOrderFails3()
{
Check.ThatCode(() =>
{
Check.That(this.tresAmigos).Contains("un", "tres", "dos").InThatOrder();
})
.Throws<FluentCheckException>()
.WithMessage(Environment.NewLine+ "The checked enumerable does not follow to the expected order. Item [\"dos\"] appears too early in the list, at index '1'." + Environment.NewLine + "The checked enumerable:" + Environment.NewLine + "\t[\"un\", \"dos\", \"tres\"]" + Environment.NewLine + "The expected value(s):" + Environment.NewLine + "\t[\"un\", \"tres\", \"dos\"]");
}
[Test]
public void ContainsOnceSucceeds()
{
Check.That(this.tresAmigos).Contains(this.tresAmigos).Once();
}
[Test]
public void ContainsOnceSucceedsWithMultipleOccurrences()
{
var tresAmigosAndMore = new[] { "un", "dos", "tres", "tres" };
Check.That(tresAmigosAndMore).Contains(tresAmigosAndMore).Once();
}
[Test]
public void ContainsOnceSucceedsWithMissingEntry()
{
var tresAmigosAndMore = new[] { "un", "dos", "tres", "four" };
Check.That(tresAmigosAndMore).Contains(tresAmigos).Once();
}
[Test]
public void ContainsOnceFails()
{
var tresAmigosAndMore = new[] { "un", "dos", "tres", "tres" };
Check.ThatCode(() =>
{
Check.That(tresAmigosAndMore).Contains(this.tresAmigos).Once();
})
.Throws<FluentCheckException>()
.WithMessage(Environment.NewLine+ "The checked enumerable has extra occurrences of the expected items. Item [\"tres\"] at position 3 is redundant." + Environment.NewLine + "The checked enumerable:" + Environment.NewLine + "\t[\"un\", \"dos\", \"tres\", \"tres\"]" + Environment.NewLine + "The expected value(s):" + Environment.NewLine + "\t[\"un\", \"dos\", \"tres\"]");
}
}
}