Skip to content

Commit bc1f602

Browse files
committed
CSHARP-1706: Add tests.
1 parent 3e65a36 commit bc1f602

File tree

122 files changed

+8514
-3267
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

122 files changed

+8514
-3267
lines changed

src/MongoDB.Driver.Core/Collation.cs

Lines changed: 94 additions & 104 deletions
Original file line numberDiff line numberDiff line change
@@ -122,49 +122,38 @@ public static Collation Simple
122122
/// <returns>A Collation instance.</returns>
123123
public static Collation FromBsonDocument(BsonDocument document)
124124
{
125-
var locale = document["locale"].AsString;
126-
127-
bool? caseLevel = null;
128-
CollationCaseFirst? caseFirst = null;
129-
CollationStrength? strength = null;
130-
bool? numericOrdering = null;
131125
CollationAlternate? alternate = null;
126+
bool? backwards = null;
127+
CollationCaseFirst? caseFirst = null;
128+
bool? caseLevel = null;
129+
string locale = null;
132130
CollationMaxVariable? maxVariable = null;
133131
bool? normalization = null;
134-
bool? backwards = null;
132+
bool? numericOrdering = null;
133+
CollationStrength? strength = null;
135134

136-
BsonValue value;
137-
if (document.TryGetValue("caseLevel", out value))
138-
{
139-
caseLevel = value.ToBoolean();
140-
}
141-
if (document.TryGetValue("caseFirst", out value))
135+
foreach (var element in document)
142136
{
143-
caseFirst = ToCollationCaseFirst(value.AsString);
137+
var value = element.Value;
138+
switch (element.Name)
139+
{
140+
case "alternate": alternate = ToCollationAlternate(value.AsString); break;
141+
case "backwards": backwards = value.ToBoolean(); break;
142+
case "caseFirst": caseFirst = ToCollationCaseFirst(value.AsString); break;
143+
case "caseLevel": caseLevel = value.ToBoolean(); break;
144+
case "locale": locale = value.AsString; break;
145+
case "maxVariable": maxVariable = ToCollationMaxVariable(value.AsString); break;
146+
case "normalization": normalization = value.ToBoolean(); break;
147+
case "numericOrdering": numericOrdering = value.ToBoolean(); break;
148+
case "strength": strength = ToCollationStrength(value.ToInt32()); break;
149+
default:
150+
throw new ArgumentException($"Unrecognized element '{element.Name}' when constructing a Collation object from a BsonDocument.");
151+
}
144152
}
145-
if (document.TryGetValue("strength", out value))
146-
{
147-
strength = ToCollationStrength(value.ToInt32());
148-
}
149-
if (document.TryGetValue("numericOrdering", out value))
150-
{
151-
numericOrdering = value.ToBoolean();
152-
}
153-
if (document.TryGetValue("alternate", out value))
154-
{
155-
alternate = ToCollationAlternate(value.AsString);
156-
}
157-
if (document.TryGetValue("maxVariable", out value))
158-
{
159-
maxVariable = ToCollationMaxVariable(value.AsString);
160-
}
161-
if (document.TryGetValue("normalization", out value))
162-
{
163-
normalization = value.ToBoolean();
164-
}
165-
if (document.TryGetValue("backwards", out value))
153+
154+
if (locale == null)
166155
{
167-
backwards = value.ToBoolean();
156+
throw new ArgumentException($"Element 'locale' missing when constructing a Collation object from a BsonDocument.");
168157
}
169158

170159
return new Collation(
@@ -179,8 +168,8 @@ public static Collation FromBsonDocument(BsonDocument document)
179168
backwards);
180169
}
181170

182-
// private static methods
183-
private static CollationAlternate ToCollationAlternate(string value)
171+
// internal static methods
172+
internal static CollationAlternate ToCollationAlternate(string value)
184173
{
185174
switch (value)
186175
{
@@ -190,7 +179,7 @@ private static CollationAlternate ToCollationAlternate(string value)
190179
}
191180
}
192181

193-
private static CollationCaseFirst ToCollationCaseFirst(string value)
182+
internal static CollationCaseFirst ToCollationCaseFirst(string value)
194183
{
195184
switch (value)
196185
{
@@ -201,7 +190,7 @@ private static CollationCaseFirst ToCollationCaseFirst(string value)
201190
}
202191
}
203192

204-
private static CollationMaxVariable ToCollationMaxVariable(string value)
193+
internal static CollationMaxVariable ToCollationMaxVariable(string value)
205194
{
206195
switch (value)
207196
{
@@ -211,7 +200,7 @@ private static CollationMaxVariable ToCollationMaxVariable(string value)
211200
}
212201
}
213202

214-
private static CollationStrength ToCollationStrength(int value)
203+
internal static CollationStrength ToCollationStrength(int value)
215204
{
216205
switch (value)
217206
{
@@ -220,7 +209,51 @@ private static CollationStrength ToCollationStrength(int value)
220209
case 3: return CollationStrength.Tertiary;
221210
case 4: return CollationStrength.Quaternary;
222211
case 5: return CollationStrength.Identical;
223-
default: throw new ArgumentException($"Invalid CollationStrength value: {value}.");
212+
default: throw new ArgumentOutOfRangeException($"Invalid CollationStrength value: {value}.");
213+
}
214+
}
215+
216+
internal static int ToInt32(CollationStrength strength)
217+
{
218+
switch (strength)
219+
{
220+
case CollationStrength.Primary: return 1;
221+
case CollationStrength.Secondary: return 2;
222+
case CollationStrength.Tertiary: return 3;
223+
case CollationStrength.Quaternary: return 4;
224+
case CollationStrength.Identical: return 5;
225+
default: throw new ArgumentException($"Invalid strength: {strength}.", nameof(strength));
226+
}
227+
}
228+
229+
internal static string ToString(CollationAlternate alternate)
230+
{
231+
switch (alternate)
232+
{
233+
case CollationAlternate.NonIgnorable: return "non-ignorable";
234+
case CollationAlternate.Shifted: return "shifted";
235+
default: throw new ArgumentException($"Invalid alternate: {alternate}.", nameof(alternate));
236+
}
237+
}
238+
239+
internal static string ToString(CollationCaseFirst caseFirst)
240+
{
241+
switch (caseFirst)
242+
{
243+
case CollationCaseFirst.Lower: return "lower";
244+
case CollationCaseFirst.Off: return "off";
245+
case CollationCaseFirst.Upper: return "upper";
246+
default: throw new ArgumentException($"Invalid caseFirst: {caseFirst}.", nameof(caseFirst));
247+
}
248+
}
249+
250+
internal static string ToString(CollationMaxVariable maxVariable)
251+
{
252+
switch (maxVariable)
253+
{
254+
case CollationMaxVariable.Punctuation: return "punct";
255+
case CollationMaxVariable.Space: return "space";
256+
default: throw new ArgumentException($"Invalid maxVariable: {maxVariable}.", nameof(maxVariable));
224257
}
225258
}
226259
#endregion
@@ -360,20 +393,21 @@ public bool Equals(Collation other)
360393
}
361394

362395
return
363-
_alternate == other._alternate &&
364-
_backwards == other._backwards &&
365-
_caseFirst == other._caseFirst &&
366-
_caseLevel == other._caseLevel &&
367-
_locale == other._locale &&
368-
_maxVariable == other._maxVariable &&
369-
_numericOrdering == other._numericOrdering &&
370-
_strength == other._strength;
396+
_alternate.Equals(other._alternate) &&
397+
_backwards.Equals(other._backwards) &&
398+
_caseFirst.Equals(other._caseFirst) &&
399+
_caseLevel.Equals(other._caseLevel) &&
400+
_locale.Equals(other._locale) &&
401+
_maxVariable.Equals(other._maxVariable) &&
402+
_normalization.Equals(other._normalization) &&
403+
_numericOrdering.Equals(other._numericOrdering) &&
404+
_strength.Equals(other._strength);
371405
}
372406

373407
/// <inheritdoc/>
374408
public override bool Equals(object obj)
375409
{
376-
return base.Equals(obj);
410+
return Equals(obj as Collation);
377411
}
378412

379413
/// <inheritdoc/>
@@ -386,6 +420,7 @@ public override int GetHashCode()
386420
.Hash(_caseLevel)
387421
.Hash(_locale)
388422
.Hash(_maxVariable)
423+
.Hash(_normalization)
389424
.Hash(_numericOrdering)
390425
.Hash(_strength)
391426
.GetHashCode();
@@ -397,14 +432,14 @@ public BsonDocument ToBsonDocument()
397432
return new BsonDocument
398433
{
399434
{ "locale", _locale },
400-
{ "caseLevel", () => _caseLevel.Value, _caseLevel != null },
401-
{ "caseFirst", () => ToString(_caseFirst.Value), _caseFirst != null },
402-
{ "strength", () => ToString(_strength.Value), _strength != null },
403-
{ "numericOrdering", () => _numericOrdering.Value, _numericOrdering != null },
404-
{ "alternate", () => ToString(_alternate.Value), _alternate != null },
405-
{ "maxVariable", () => ToString(_maxVariable.Value), _maxVariable != null },
406-
{ "normalization", () => _normalization.Value, _normalization != null },
407-
{ "backwards", () => _backwards.Value, _backwards != null }
435+
{ "caseLevel", () => _caseLevel.Value, _caseLevel.HasValue },
436+
{ "caseFirst", () => ToString(_caseFirst.Value), _caseFirst.HasValue },
437+
{ "strength", () => ToInt32(_strength.Value), _strength.HasValue },
438+
{ "numericOrdering", () => _numericOrdering.Value, _numericOrdering.HasValue },
439+
{ "alternate", () => ToString(_alternate.Value), _alternate.HasValue },
440+
{ "maxVariable", () => ToString(_maxVariable.Value), _maxVariable.HasValue },
441+
{ "normalization", () => _normalization.Value, _normalization.HasValue },
442+
{ "backwards", () => _backwards.Value, _backwards.HasValue }
408443
};
409444
}
410445

@@ -449,50 +484,5 @@ public Collation With(
449484
normalization.WithDefault(_normalization),
450485
backwards.WithDefault(_backwards));
451486
}
452-
453-
// private methods
454-
private string ToString(CollationAlternate alternate)
455-
{
456-
switch (alternate)
457-
{
458-
case CollationAlternate.NonIgnorable: return "non-ignorable";
459-
case CollationAlternate.Shifted: return "shifted";
460-
default: throw new ArgumentException($"Invalid alternate: {alternate}.", nameof(alternate));
461-
}
462-
}
463-
464-
private string ToString(CollationMaxVariable maxVariable)
465-
{
466-
switch (maxVariable)
467-
{
468-
case CollationMaxVariable.Punctuation: return "punct";
469-
case CollationMaxVariable.Space: return "space";
470-
default: throw new ArgumentException($"Invalid maxVariable: {maxVariable}.", nameof(maxVariable));
471-
}
472-
}
473-
474-
private string ToString(CollationCaseFirst caseFirst)
475-
{
476-
switch (caseFirst)
477-
{
478-
case CollationCaseFirst.Lower: return "lower";
479-
case CollationCaseFirst.Off: return "off";
480-
case CollationCaseFirst.Upper: return "upper";
481-
default: throw new ArgumentException($"Invalid caseFirst: {caseFirst}.", nameof(caseFirst));
482-
}
483-
}
484-
485-
private int ToString(CollationStrength strength)
486-
{
487-
switch (strength)
488-
{
489-
case CollationStrength.Primary: return 1;
490-
case CollationStrength.Secondary: return 2;
491-
case CollationStrength.Tertiary: return 3;
492-
case CollationStrength.Quaternary: return 4;
493-
case CollationStrength.Identical: return 5;
494-
default: throw new ArgumentException($"Invalid strength: {strength}.", nameof(strength));
495-
}
496-
}
497487
}
498488
}

src/MongoDB.Driver.Core/Core/Authentication/DefaultAuthenticator.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -76,7 +76,7 @@ public Task AuthenticateAsync(IConnection connection, ConnectionDescription desc
7676

7777
private IAuthenticator CreateAuthenticator(ConnectionDescription description)
7878
{
79-
if (SupportedFeatures.IsScramSha1AuthenticationSupported(description.ServerVersion))
79+
if (Feature.ScramSha1Authentication.IsSupported(description.ServerVersion))
8080
{
8181
return new ScramSha1Authenticator(_credential, _randomStringGenerator);
8282
}

0 commit comments

Comments
 (0)