-
Notifications
You must be signed in to change notification settings - Fork 4.7k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Additional code coverage in System.Text.Json (#33019)
* added tests for invalid metadata properties with same length * moved base64 test data in class, added test case * added missing cyclic test for max depth of 0 * added test for null converter * validated exception path * added comment explaining 0 max depth * using named parameter for readability * added license header * replacing duplicate test data * removed redunant character assignment * added explanation for base64 string length
- Loading branch information
Showing
7 changed files
with
138 additions
and
102 deletions.
There are no files selected for viewing
65 changes: 65 additions & 0 deletions
65
src/libraries/System.Text.Json/tests/JsonBase64TestData.cs
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,65 @@ | ||
// Licensed to the .NET Foundation under one or more agreements. | ||
// The .NET Foundation licenses this file to you under the MIT license. | ||
// See the LICENSE file in the project root for more information. | ||
|
||
using System.Collections.Generic; | ||
|
||
namespace System.Text.Json.Tests | ||
{ | ||
internal class JsonBase64TestData | ||
{ | ||
public static IEnumerable<object[]> ValidBase64Tests() | ||
{ | ||
yield return new object[] { "\"ABC=\"" }; | ||
yield return new object[] { "\"AB+D\"" }; | ||
yield return new object[] { "\"ABCD\"" }; | ||
yield return new object[] { "\"ABC/\"" }; | ||
yield return new object[] { "\"++++\"" }; | ||
yield return new object[] { GenerateRandomValidLargeString() }; | ||
} | ||
|
||
public static IEnumerable<object[]> InvalidBase64Tests() | ||
{ | ||
yield return new object[] { "\"ABC===\"" }; | ||
yield return new object[] { "\"ABC\"" }; | ||
yield return new object[] { "\"ABC!\"" }; | ||
yield return new object[] { GenerateRandomInvalidLargeString(includeEscapedCharacter: true) }; | ||
yield return new object[] { GenerateRandomInvalidLargeString(includeEscapedCharacter: false) }; | ||
} | ||
|
||
private static string GenerateRandomValidLargeString() | ||
{ | ||
var random = new Random(42); | ||
var charArray = new char[502]; // valid Base64 strings must have length divisible by 4 (not including surrounding quotes) | ||
charArray[0] = '"'; | ||
for (int i = 1; i < charArray.Length - 1; i++) | ||
{ | ||
charArray[i] = (char)random.Next('A', 'Z'); // ASCII values (between 65 and 90) that constitute valid base 64 string. | ||
} | ||
charArray[charArray.Length - 1] = '"'; | ||
var jsonString = new string(charArray); | ||
return jsonString; | ||
} | ||
|
||
private static string GenerateRandomInvalidLargeString(bool includeEscapedCharacter) | ||
{ | ||
var random = new Random(42); | ||
var charArray = new char[500]; | ||
charArray[0] = '"'; | ||
for (int i = 1; i < charArray.Length - 1; i++) | ||
{ | ||
charArray[i] = (char)random.Next('?', '\\'); // ASCII values (between 63 and 91) that don't need to be escaped. | ||
} | ||
|
||
if (includeEscapedCharacter) | ||
{ | ||
charArray[256] = '\\'; | ||
charArray[257] = '"'; | ||
} | ||
|
||
charArray[charArray.Length - 1] = '"'; | ||
var jsonString = new string(charArray); | ||
return jsonString; | ||
} | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters