This repository has been archived by the owner on Jan 24, 2021. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 1.5k
/
MediaRangeFixture.cs
100 lines (81 loc) · 2.93 KB
/
MediaRangeFixture.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
namespace Nancy.Tests.Unit.Responses.Negotiation
{
using System.Linq;
using Nancy.Responses.Negotiation;
using Xunit;
public class MediaRangeFixture
{
[Fact]
public void Should_parse_media_range_parameters()
{
// When
var range = new MediaRange("application/vnd.nancy;a=1;b=2");
// Then
range.Parameters.Keys.ElementAt(0).ShouldEqual("a");
range.Parameters.Keys.ElementAt(1).ShouldEqual("b");
range.Parameters.Values.ElementAt(0).ShouldEqual("1");
range.Parameters.Values.ElementAt(1).ShouldEqual("2");
}
[Fact]
public void Should_match_with_parameters_if_parameters_match()
{
// Given
var range1 = new MediaRange("application/vnd.nancy;a=1;b=2");
var range2 = new MediaRange("application/vnd.nancy;a=1;b=2");
// Then
range1.MatchesWithParameters(range2).ShouldBeTrue();
}
[Fact]
public void Should_not_match_with_parameters_if_parameters_do_not_match()
{
// Given
var range1 = new MediaRange("application/vnd.nancy;a=1;b=2");
var range2 = new MediaRange("application/vnd.nancy;a=1;b=2;c=3");
// Then
range1.MatchesWithParameters(range2).ShouldBeFalse();
}
[Fact]
public void Should_match_with_parameters_if_parameters_match_in_any_order()
{
// Given
var range1 = new MediaRange("application/vnd.nancy;a=1;b=2");
var range2 = new MediaRange("application/vnd.nancy;b=2;a=1");
// Then
range1.MatchesWithParameters(range2).ShouldBeTrue();
}
[Fact]
public void Should_handle_no_parameters_when_calling_tostring()
{
// Given
var range = new MediaRange("application/vnd.nancy");
// Then
range.ToString().ShouldEqual("application/vnd.nancy");
}
[Fact]
public void Should_include_parameters_when_calling_tostring()
{
// Given
var range = new MediaRange("application/vnd.nancy;a=1;b=2");
// Then
range.ToString().ShouldEqual("application/vnd.nancy;a=1;b=2");
}
[Fact]
public void Should_strip_whitespace_when_calling_tostring()
{
// Given
var range = new MediaRange("application/vnd.nancy ; a=1; b=2");
// Then
range.ToString().ShouldEqual("application/vnd.nancy;a=1;b=2");
}
[Fact]
public void Should_cast_to_null_string()
{
// Given
MediaRange range = null;
// When
string cast = (string)range;
// Then
Assert.Null(cast);
}
}
}