public void BuildRouteParameters_Parses_Different_Types_From_Path_Parts(string methodName, string pathPart, string culture, object rawExpected) { using (new CultureSwap(culture)) { var route = Route_Tests.CreateRoute(typeof(PathPartTypeController), methodName); _RouteMapper.Initialise(new Route[] { route }); _Environment.SetRequestPath(new string[] { route.PathParts[0].Part, pathPart }); var parameters = _RouteMapper.BuildRouteParameters(route, _Environment.Environment); var expected = rawExpected; switch (methodName) { case nameof(PathPartTypeController.DateTimePP): expected = DataRowParser.DateTime((string)expected); break; case nameof(PathPartTypeController.DateTimeOffsetPP): expected = DataRowParser.DateTimeOffset((string)expected); break; } Assert.IsTrue(parameters.IsValid); Assert.AreEqual(1, parameters.Parameters.Length); var actual = parameters.Parameters[0]; if (actual is byte[] byteArray) { var expectedByteArray = (byte[])expected; Assert.IsTrue(expectedByteArray.SequenceEqual(byteArray)); } else { Assert.AreEqual(expected, parameters.Parameters[0]); } } }
public void FormatDateTime_Formats_DateTime(string inputText, string culture, string expected) { using (new CultureSwap(culture)) { var input = DataRowParser.DateTime(inputText); var actual = Formatter.FormatDateTime(input); Assert.AreEqual(expected, actual); } }
public void Format_Behaves_Correctly(string rawValue, string expected) { using (new CultureSwap("en-GB")) { var value = DataRowParser.DateTime(rawValue).Value; var formatter = new DateTime_Iso8601_Formatter(); var actual = formatter.Format(value); Assert.AreEqual(expected, actual); } }
[DataRow("en-GB", "2019-07-01T17:42:32.123+0800", true, "2019-07-01 09:42:32.123 Utc")] // Local timezone specified, output is UTC public void TryParse_Behaves_Correctly(string culture, string text, bool expectedResult, string expectedValueText) { using (new CultureSwap(culture)) { var parser = new DateTime_Invariant_Parser(); var actualResult = parser.TryParse(text, out var actualValue); var expectedValue = DataRowParser.DateTime(expectedValueText); Assert.AreEqual(expectedResult, actualResult); Assert.AreEqual(expectedValue, actualValue); Assert.AreEqual(expectedValue?.Kind, actualValue.Kind); } }
public void BuildRouteParameters_Can_Parse_Parameter_From_Query_String(string methodName, string parameterName, string queryString, string culture, object rawExpected) { using (new CultureSwap(culture)) { var route = Route_Tests.CreateRoute(typeof(QueryStringController), methodName); _RouteMapper.Initialise(new Route[] { route }); _Environment.RequestQueryString = queryString; _Environment.SetRequestPath(route.PathParts[0].Part); var parameters = _RouteMapper.BuildRouteParameters(route, _Environment.Environment); var expected = rawExpected; switch (methodName) { case nameof(QueryStringController.DateParam): expected = DataRowParser.DateTime((string)expected); break; case nameof(QueryStringController.DateOffsetParam): expected = DataRowParser.DateTimeOffset((string)expected); break; } Assert.IsTrue(parameters.IsValid); Assert.AreEqual(1, parameters.Parameters.Length); var param = parameters.Parameters[0]; if (expected is IList expectedList) { var actualList = (IList)param; Assert.AreEqual(expectedList.Count, actualList.Count); for (var i = 0; i < expectedList.Count; ++i) { Assert.AreEqual(expectedList[i], actualList[i]); } } else { Assert.AreEqual(expected, param); } } }