public void AppendPath_ShouldAddPath(
		  HttpRequestBuilderOptions sut,
			string expected)
		{
			//arrange

			//act
			sut.AppendPath(expected);
			var actual = sut.PathFragments.Last();

			//assert
			actual.Should().Be(expected);
		}
		public void Uri_WithNoParameters_ShouldReturnCorrectValue(
			[Frozen] Uri baseUri,
		  HttpRequestBuilderOptions sut,
			string path,
			string path2)
		{
			//arrange
			sut.AppendPath(path)
			   .AppendPath(path2);

			//act
			var actual = sut.Uri;

			//assert
			var expected = string.Format("{0}/{1}/{2}", baseUri.ToString().TrimEnd('/'), path, path2);
			actual.Should().Be(expected);
		}
		public void Uri_ShouldReturnCorrectValue(
			[Frozen] Uri baseUri,
		  HttpRequestBuilderOptions sut,
			string path,
			string path2,
			string key,
			string value)
		{
			//arrange
			//add reserved caracters to test escaping
			value += "?";
			key += "=";
			path += "?";
			path2 += "=";
			sut.AppendPath(path)
			   .AppendPath(path2)
			   .Parameter(key, value);

			//act
			var actual = sut.Uri;

			//assert
			var expected = string.Format("{0}/{1}/{2}?{3}={4}", baseUri.ToString().TrimEnd('/'), Uri.EscapeDataString(path), Uri.EscapeDataString(path2), Uri.EscapeDataString(key), Uri.EscapeDataString(value));
			actual.Should().Be(expected);
		}
		public void AppendPath_WithEmptyStrings_ShouldThrow(
			string path,
			HttpRequestBuilderOptions sut
			)
		{
			//act
			Action action = () => sut.AppendPath(path);

			//assert
			action.ShouldThrow<ArgumentNullException>();
		}
		public void AppendPath_ShouldReturnSut(
		  HttpRequestBuilderOptions sut,
			string expected)
		{
			//act
			var actual = sut.AppendPath(expected);

			//assert
			actual.Should().Be(sut);
		}
		public void AppendPath_WithPathSeparator_ShouldAddCorrectPath(
			string path,
			string expectedPath,
		  HttpRequestBuilderOptions sut
			)
		{
			//arrange

			//act
			sut.AppendPath(path);

			//assert
			var expected = expectedPath.Split('/');
			sut.PathFragments.ShouldAllBeEquivalentTo(expected);
		}