SIL.TestUtilities 16.0.0-beta0158

Prefix Reserved
This is a prerelease version of SIL.TestUtilities.
There is a newer version of this package available.
See the version list below for details.
dotnet add package SIL.TestUtilities --version 16.0.0-beta0158
                    
NuGet\Install-Package SIL.TestUtilities -Version 16.0.0-beta0158
                    
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="SIL.TestUtilities" Version="16.0.0-beta0158" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="SIL.TestUtilities" Version="16.0.0-beta0158" />
                    
Directory.Packages.props
<PackageReference Include="SIL.TestUtilities" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add SIL.TestUtilities --version 16.0.0-beta0158
                    
#r "nuget: SIL.TestUtilities, 16.0.0-beta0158"
                    
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package SIL.TestUtilities@16.0.0-beta0158
                    
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=SIL.TestUtilities&version=16.0.0-beta0158&prerelease
                    
Install as a Cake Addin
#tool nuget:?package=SIL.TestUtilities&version=16.0.0-beta0158&prerelease
                    
Install as a Cake Tool

SIL.TestUtilities contains convenience classes for developing unit tests.

Product Compatible and additional computed target framework versions.
.NET net5.0 was computed.  net5.0-windows was computed.  net6.0 was computed.  net6.0-android was computed.  net6.0-ios was computed.  net6.0-maccatalyst was computed.  net6.0-macos was computed.  net6.0-tvos was computed.  net6.0-windows was computed.  net7.0 was computed.  net7.0-android was computed.  net7.0-ios was computed.  net7.0-maccatalyst was computed.  net7.0-macos was computed.  net7.0-tvos was computed.  net7.0-windows was computed.  net8.0 was computed.  net8.0-android was computed.  net8.0-browser was computed.  net8.0-ios was computed.  net8.0-maccatalyst was computed.  net8.0-macos was computed.  net8.0-tvos was computed.  net8.0-windows was computed.  net9.0 was computed.  net9.0-android was computed.  net9.0-browser was computed.  net9.0-ios was computed.  net9.0-maccatalyst was computed.  net9.0-macos was computed.  net9.0-tvos was computed.  net9.0-windows was computed.  net10.0 was computed.  net10.0-android was computed.  net10.0-browser was computed.  net10.0-ios was computed.  net10.0-maccatalyst was computed.  net10.0-macos was computed.  net10.0-tvos was computed.  net10.0-windows was computed. 
.NET Core netcoreapp2.0 was computed.  netcoreapp2.1 was computed.  netcoreapp2.2 was computed.  netcoreapp3.0 was computed.  netcoreapp3.1 was computed. 
.NET Standard netstandard2.0 is compatible.  netstandard2.1 was computed. 
.NET Framework net461 was computed.  net462 is compatible.  net463 was computed.  net47 was computed.  net471 was computed.  net472 was computed.  net48 is compatible.  net481 was computed. 
MonoAndroid monoandroid was computed. 
MonoMac monomac was computed. 
MonoTouch monotouch was computed. 
Tizen tizen40 was computed.  tizen60 was computed. 
Xamarin.iOS xamarinios was computed. 
Xamarin.Mac xamarinmac was computed. 
Xamarin.TVOS xamarintvos was computed. 
Xamarin.WatchOS xamarinwatchos was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages (6)

Showing the top 5 NuGet packages that depend on SIL.TestUtilities:

Package Downloads
SIL.WritingSystems.Tests

Unit tests for SIL.WritingSystems

SIL.DblBundle.Tests

Unit tests for SIL.DblBundle

SIL.Core.Tests

Unit tests for SIL.Core

SIL.LCModel.Core.Tests

The liblcm library is the core FieldWorks model for linguistic analyses of languages. Tools in this library provide the ability to store and interact with language and culture data, including anthropological, text corpus, and linguistics data. This package provides unit tests for SIL.LCModel.Core.

SIL.Chorus.LibChorus.TestUtilities

End-user collaboration library via 3-way xml merging and hg dvcs under the hood.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
17.0.0-beta0079 2 10/28/2025
17.0.0-beta0077 59 10/27/2025
17.0.0-beta0075 158 10/23/2025
17.0.0-beta0072 431 10/2/2025
17.0.0-beta0070 217 9/30/2025
16.2.0 245 9/30/2025
16.2.0-beta0043 160 9/26/2025
16.2.0-beta0040 296 9/15/2025
16.2.0-beta0037 279 9/15/2025
16.2.0-beta0034 212 9/9/2025
16.2.0-beta0029 167 9/5/2025
16.2.0-beta0027 212 9/4/2025
16.2.0-beta0025 201 9/3/2025
16.2.0-beta0022 191 8/21/2025
16.2.0-beta0020 194 8/21/2025
16.2.0-beta0018 271 8/7/2025
16.2.0-beta0016 280 8/7/2025
16.2.0-beta0013 378 7/25/2025
16.2.0-beta0008 413 7/25/2025
16.2.0-beta0005 496 7/24/2025
16.1.0 174 7/18/2025
16.1.0-beta0022 132 7/18/2025
16.1.0-beta0009 155 7/11/2025
16.1.0-beta0006 136 7/11/2025
16.1.0-beta0005 188 7/10/2025
16.1.0-beta0004 374 6/12/2025
16.0.1-beta0002 214 5/20/2025
16.0.1-beta0001 193 5/26/2025
16.0.0 306 5/20/2025
16.0.0-beta0162 198 5/20/2025
16.0.0-beta0159 211 5/20/2025
16.0.0-beta0158 185 5/17/2025
16.0.0-beta0146 294 5/13/2025
16.0.0-beta0145 285 5/12/2025
16.0.0-beta0144 153 4/25/2025
16.0.0-beta0143 153 4/25/2025
16.0.0-beta0141 257 4/16/2025
16.0.0-beta0140 223 4/7/2025
16.0.0-beta0127 182 4/4/2025
16.0.0-beta0126 183 3/28/2025
16.0.0-beta0125 188 3/27/2025
16.0.0-beta0124 216 3/27/2025
16.0.0-beta0109 196 3/26/2025
16.0.0-beta0104 516 3/24/2025
16.0.0-beta0103 195 3/18/2025
16.0.0-beta0102 204 3/18/2025
16.0.0-beta0090 192 3/18/2025
16.0.0-beta0088 128 3/14/2025
16.0.0-beta0083 212 3/12/2025
16.0.0-beta0079 212 3/8/2025
16.0.0-beta0068 253 3/5/2025
16.0.0-beta0067 249 3/5/2025
16.0.0-beta0066 251 3/5/2025
16.0.0-beta0063 247 3/5/2025
16.0.0-beta0061 264 3/4/2025
16.0.0-beta0052 162 2/24/2025
16.0.0-beta0051 155 2/21/2025
16.0.0-beta0050 153 2/21/2025
16.0.0-beta0049 142 2/20/2025
16.0.0-beta0048 129 2/20/2025
16.0.0-beta0047 151 2/18/2025
16.0.0-beta0046 167 2/18/2025
16.0.0-beta0045 158 2/17/2025
16.0.0-beta0034 154 2/17/2025
16.0.0-beta0033 153 2/17/2025
16.0.0-beta0032 183 2/13/2025
16.0.0-beta0031 163 2/13/2025
16.0.0-beta0021 164 2/12/2025
16.0.0-beta0020 156 2/12/2025
16.0.0-beta0019 162 2/11/2025
16.0.0-beta0017 143 2/7/2025
16.0.0-beta0016 122 2/7/2025
16.0.0-beta0012 149 2/6/2025
16.0.0-beta0011 141 2/6/2025
16.0.0-beta0010 159 2/5/2025
16.0.0-beta0009 148 2/5/2025
15.0.1-beta0007 143 1/27/2025
15.0.1-beta0004 133 1/24/2025
15.0.1-beta0003 159 1/23/2025
15.0.1-beta0002 122 1/13/2025
15.0.0 348 1/7/2025
15.0.0-beta0170 133 1/7/2025
15.0.0-beta0165 150 1/2/2025
15.0.0-beta0163 147 12/20/2024
15.0.0-beta0135 176 12/20/2024
15.0.0-beta0133 161 12/3/2024
15.0.0-beta0128 292 11/19/2024
15.0.0-beta0122 153 11/19/2024
15.0.0-beta0117 1,309 11/14/2024
15.0.0-beta0115 139 11/12/2024
15.0.0-beta0114 134 11/7/2024
15.0.0-beta0112 135 10/30/2024
15.0.0-beta0111 107 10/28/2024
15.0.0-beta0102 104 10/25/2024
15.0.0-beta0101 108 10/24/2024
15.0.0-beta0099 111 10/24/2024
15.0.0-beta0098 103 10/24/2024
15.0.0-beta0097 113 10/17/2024
15.0.0-beta0096 119 10/11/2024
15.0.0-beta0093 114 10/10/2024
15.0.0-beta0091 115 10/8/2024
15.0.0-beta0083 133 9/6/2024
15.0.0-beta0082 120 8/28/2024
15.0.0-beta0081 272 8/28/2024
15.0.0-beta0079 118 8/27/2024
15.0.0-beta0067 140 8/23/2024
15.0.0-beta0051 143 8/19/2024
14.2.0-beta0022 1,326 8/15/2024
14.2.0-beta0021 143 8/15/2024
14.2.0-beta0020 130 8/12/2024
14.2.0-beta0019 158 8/1/2024
14.2.0-beta0014 125 8/1/2024
14.2.0-beta0012 116 8/1/2024
14.2.0-beta0010 132 8/1/2024
14.2.0-beta0009 141 6/10/2024
14.1.2-beta0002 124 6/7/2024
14.1.1 270 5/23/2024
14.1.1-beta0004 145 5/23/2024
14.1.1-beta0002 142 5/14/2024
14.1.0 169 5/13/2024
14.1.0-beta0007 120 5/13/2024
14.1.0-beta0005 132 5/9/2024
14.0.1-beta0003 124 5/1/2024
14.0.1-beta0001 126 4/15/2024
14.0.0 227 4/9/2024
13.0.1 14,498 1/9/2024
13.0.0 233 12/8/2023
12.0.1 1,619 5/26/2023
12.0.0 5,223 2/15/2023
11.0.1 404 1/27/2023
11.0.0 1,200 1/21/2023
10.1.0 1,152 8/26/2022
10.0.0 1,774 8/4/2022
9.0.0 1,065 6/3/2022
8.0.0 2,288 3/4/2021
7.0.0 850 8/29/2019

Changes since version 15.0.0

Added:
- [SIL.WritingSystems] Added public DownloadLanguageTags method for updating the cached langtags.json from the SLDR repository.
- [SIL.Core] Add environment variable to disable `GlobalMutex` across processes. Helpful for snap packages in Linux.
- [SIL.Core] Added string extension method SplitLines.
- [SIL.Windows.Forms] Added ContributorsListControl.Initialize method to allow the model to be set later when using the (existing) parameterless constructor in Designer.
- [SIL.Windows.Forms] In class SettingsLauncherButton, added property Link to expose the link label. This enables changing its color, font, etc.
- [SIL.Windows.Forms.Scripture] Added VerseControl.TabKeyPressedInVerseField event to VerseControl to support tabbing out of the verse field of a VerseControl into the next control in the tab order rather than cycling back to the book field.
- [SIL.Windows.Forms] Added OtherKeysToTreatAsInputKeys property to EnterTextBox.
- [SIL.DictionaryServices] Added Fields property to LexEntry. Modified LiftWriter.Add(LexEntry entry) to also write the content of entry.Fields.
- [SIL.Windows.Forms] Added correctly spelled HeaderLabel.ShowWindowBackgroundOnTopAndRightEdge.
- [SIL.Core] Added correctly spelled XmlUtils.ConvertMultiParagraphToSafeXml.
- [SIL.Core] Added DateTimeExtensions.ParseModernPastDateTimePermissivelyWithException (as the most probable replacement for the deprecated version of ParseDateTimePermissivelyWithException).
- [SIL.Core] Added DateTimeExtensions.ParsePastDateTimePermissivelyWithException as a convenience method.
- [SIL.Core] Added overload of DateTimeExtensions.ParseDateTimePermissivelyWithException that takes parameters `reasonableMin` and `reasonableMax`.

Changed:
- [SIL.TestUtilities] Made FluentAssertXml classes use "Assert.That" so they can work in clients that use NUnit 4.
- [SIL.Windows.Forms] Removed protected members from FadingMessageWindow: MsgThread, MsgForm, Text, MsgPoint, and ShowForm. (The underlying implementation needed to be changed, and the existing implementation was such that these members would be unlikely to have been meaningful or helpful in a derived class anyway.)
- [SIL.Windows.Forms] Added the stated requirement that FadingMessageWindow.Show be called on the UI thread.
- [SIL.WritingSystems] Changed optional parameter of SLDR's Initialize from offlineMode to offlineTestMode (technically a breaking change).
- [SIL.WritingSystems] Added optional parameter to InitializeLanguageTags: bool downloadLanguageTags (default true).
- [SIL.WritingSystems] Download of langtags.json handled with ETag and If-None-Match headers instead of If-Modified-Since.
- [SIL.WritingSystems] Added version number to the UserAgent string used for LDML and langtags.json requests.
- [SIL.DictionaryServices] In class LiftLexEntryRepository, renamed private method GetTrimmedElementsSeperatedBySemiColon to GetTrimmedElementsSeparatedBySemiColon and private method CheckIfTokenHasAlreadyBeenReturnedForThisSemanticDomain parameter fieldsandValuesForRecordTokens to fieldsAndValuesForRecordTokens.
- [SIL.DictionaryServices.Tests] Renamed test class LiftLexEntryRepositoryStateUnitializedTests to LiftLexEntryRepositoryStateUninitializedTests.
- [SIL.DictionaryServices.Tests.Lift] Renamed test class LiftRepositoryStateUnitializedTests to LiftRepositoryStateUninitializedTests.
- [SIL.Tests.Data] Renamed test interface IRepositoryStateUnitializedTests to IRepositoryStateUninitializedTests and test class MemoryRepositoryStateUnitializedTests to MemoryRepositoryStateUninitializedTests.
- [SIL.Tests.Spelling] Renamed test class SpellingwordTokenizerTests to SpellingWordTokenizerTests.
- [SIL.Tests.Text] In test class MultiTextBaseTests, renamed method AnnotationOfMisssingAlternative to AnnotationOfMissingAlternative.
- [SIL.Windows.Forms.Keyboarding.Tests] In test class XkbKeyboardAdapterTests, renamed method Errorkeyboards to ErrorKeyboards.
- [SIL.Windows.Forms.Keyboarding.Windows] In internal interface ITfInputProcessorProfileMgr, renamed method RegisterProfile parameter hklsubstitute to hklSubstitute.
- [SIL.Windows.Forms.Reporting] In class ProblemNotificationDialog, renamed internal property \_reoccurenceMessage to \_reoccurrenceMessage.
- [SIL.Windows.Forms.Widgets] Fix loss of precision in drawing arrows within HorizontalSpinner.OnPaint.
- [SIL.WritingSystems] In class LanguageLookup changed private method AddLanguage parameter threelettercode to threeLetterCode.
- [SIL.WritingSystems] Updated langtags.json and ianaSubtagRegistry.txt in Resources.
- [SIL.Xml] BREAKING CHANGE: In class XmlUtils, renamed method GetIndendentedXml to GetIndentedXml.
- [SIL.UsbDrive.Linux] BREAKING CHANGE: In interface IUDiskDevice renamed method DriveAtaSmartInitiateSelftest to DriveAtaSmartInitiateSelfTest and property DevicePresentationNopolicy to DevicePresentationNoPolicy.
- [SIL.DictionaryServices.Model] BREAKING CHANGE: In class LexEntry, renamed WellKnownProperties.FlagSkipBaseform to WellKnownProperties.FlagSkipBaseForm and GetSomeMeaningToUseInAbsenseOfHeadWord to GetSomeMeaningToUseInAbsenceOfHeadWord.
- [SIL.DictionaryServices.Model] BREAKING CHANGE: In classes LexEntry and LexSense, renamed method CleanUpAfterEditting to CleanUpAfterEditing.
- [SIL.Lift] BREAKING CHANGE: In abstract class PalasoDataObject, renamed method CleanUpAfterEditting to CleanUpAfterEditing.
- [SIL.Reporting] BREAKING CHANGE: In classes ErrorReport and ExceptionHelper, renamed methed GetHiearchicalExceptionInfo to GetHierarchicalExceptionInfo.
- [SIL.Reporting] BREAKING CHANGE: In interface IRepeatNoticePolicy and classes ShowAlwaysPolicy and ShowOncePerSessionBasedOnExactMessagePolicy, renamed property ReoccurenceMessage to ReoccurrenceMessage.
- [SIL.Reporting] BREAKING CHANGE: In class FontAnalytics, renamed property MinumumInterval to MinimumInterval.
- [SIL.Scripture] BREAKING CHANGE: In class BCVRef method MakeReferenceString, renamed parameter supressChapterForIntroMatter to suppressChapterForIntroMatter.
- [SIL.Windows.Forms.ImageToolbox] BREAKING CHANGE: Changed class PalsoImageNotDisposed to PalasoImageNotDisposed.
- [SIL.Windows.Forms.Reporting] BREAKING CHANGE: In class ProblemNotificationDialog, renamed method ReoccurenceMessage to ReoccurrenceMessage.
- [SIL.WritingSystems] BREAKING CHANGE: A new FontDefinition now has .Role default to FontRoles.None rather than FontRoles.Default. Likewise, the method LdmlDataMapper.Read now reads in a font with no type as FontRoles.None instead of FontRoles.Default.
- [SIL.WritingSystems] Added UI to enum FontRoles; the methods LdmlDataMapper.Read and LdmlDataMapper.Write now support fonts with type "ui". Also, if the ldml file has a font type not covered in FontRoles, LdmlDataMapper.Read will add it as FontRoles.Default.
- [SIL.Windows.Forms] BREAKING CHANGE: Upgraded dependency on L10nSharp. See note regarding creating LocalizationManager before calling localization methods. In tests, it may be expedient to set `LocalizationManager.StrictInitializationMode` to false.
- [SIL.Windows.Forms.Keyboarding] BREAKING CHANGE: Upgraded dependency on L10nSharp. See note regarding creating LocalizationManager before calling localization methods. In tests, it may be expedient to set `LocalizationManager.StrictInitializationMode` to false.
- [SIL.Core] Improved efficiency in XmlUtils methods: MakeSafeXml and ConvertMultiParagraphToSafeXml (name corrected), and MakeSafeXmlAttribute.
- [SIL.Core] BREAKING CHANGE (potentially): Made ParseDateTimePermissivelyWithException into an extension method (on string).
- [SIL.Core] BREAKING CHANGE (potentially): Changed behavior of DateTimeExtensions.ParseDateTimePermissivelyWithException (now deprecated) to try to interpret the date according to either the Gregorian calendar or the Buddhist calender in order to get the date to fall within a reasonable expected range (from 1/1/1900 through one day in the future). This means that depending on the current culture, dates might be interpreted differently from before. The known places in SIL code where this method is used seems to be for dates in the recent past (modern times); hence the default range. A new overload was added that will allow callers with other needs to specify a different range.


Fixed:
- [SIL.Windows.Forms] Changed build date in SILAboutBox to be computed using the last write time instead of creation time.
- [SIL.Windows.Forms] Made FadingMessageWindow implement all UI logic on the main UI thread in a thread-safe way. Fixes crashes like SP-2340.
- [SIL.Windows.Forms] Made ContributorsListControl more threadsafe. Possibly fixes crashes like SP-2353 or at least makes them less likely.
- [SIL.WritingSystems] Added check to Subtag.Equals to ensure two subtags being compared are of same derived type. This could potentially be a subtle breaking change in the unlikely event that someone was intentionally relying on the previous errant behavior.
- [SIL.Windows.Forms] Fix loss of precision in Animator.FrameRate getter.
- [SIL.Core] Changed ReplaceSubstringInAttr.Visit to use StringComparison.Ordinal rather than the default (StringComparison.CurrentCulture), and also made it correctly return true when the replacement was made successfully. Although either of these could potentially be a BREAKING CHANGE, in practice, it seems unlikely that anyone would have been relying on CurrentCulture comparisons, and although the return value is used, it seems to be used merely to set a flag that is returned from the callers, and the callers I could find for those methods all appear to ignore the returned value. In any case, if someone were relying on the return value, it's unlikely they could have found it helpful to have it return false unconditionally.

Deprecated:
- [SIL.DictionaryServices] Deprecated the second parameter of GetHumanReadableIdWithAnyIllegalUnicodeEscaped: Added GetHumanReadableIdWithAnyIllegalUnicodeEscaped(LexEntry entry) and marked GetHumanReadableIdWithAnyIllegalUnicodeEscaped(LexEntry entry, Dictionary<string, int> idsAndCounts) as [Obsolete].
- [SIL.Windows.Forms] Marked the misspelled HeaderLabel.ShowWindowBackgroudOnTopAndRightEdge as [Obsolete] in favor of correctly spelled ShowWindowBackgroundOnTopAndRightEdge.
- [SIL.Core] Marked the misspelled XmlUtils.ConvertMultiparagraphToSafeXml as [Obsolete] in favor of correctly spelled ConvertMultiParagraphToSafeXml.
- [SIL.Core] Marked GetAttributeValue as deprecated in favor of GetOptionalAttributeValue. (According to the summary, this has been deprecated for a long time, but it was not officially marked as obsolete.)
- [SIL.Core] Marked DateTimeExtensions.ParseDateTimePermissivelyWithException as [Obsolete] in favor of ParseModernPastDateTimePermissivelyWithException (or ParsePastDateTimePermissivelyWithException or the new overload of ParseDateTimePermissivelyWithException).

See full changelog at https://github.com/sillsdev/libpalaso/blob/master/CHANGELOG.md