public void GetFileTypes_ReturnsListOfAllFileTypesIncludingUnknown() { var handles = CreateRecognizerHandles( new RecognizerInfo { Traits = new FileTypeRecognizerTraits("TypeA", "A") }, new RecognizerInfo { Traits = new FileTypeRecognizerTraits("TypeB", "B") { SuperTypeId = "TypeC" } }, new RecognizerInfo { Traits = new FileTypeRecognizerTraits("TypeC", "C") { SuperTypeId = "TypeD" } }, new RecognizerInfo { Traits = new FileTypeRecognizerTraits("TypeD", "D") }); var fileTypeManager = new FileTypeManager(handles); var expectedFileTypes = new FileType[5]; expectedFileTypes[0] = new FileType("TypeA", "A", null); expectedFileTypes[3] = new FileType("TypeD", "D", null); expectedFileTypes[2] = new FileType("TypeC", "C", expectedFileTypes[3]); expectedFileTypes[1] = new FileType("TypeB", "B", expectedFileTypes[2]); expectedFileTypes[4] = fileTypeManager.UnknownFileType; IList<FileType> actualFileTypes = fileTypeManager.GetFileTypes(); Assert.Over.KeyedPairs( expectedFileTypes.ToDictionary(x => x.Id), actualFileTypes.ToDictionary(x => x.Id), (x, y) => AssertEx.That(() => AreEquivalent(x, y))); }