diff --git a/Apps/YPermitin.FIASToolSet.DistributionDownloader/YPermitin.FIASToolSet.DistributionDownloader.csproj b/Apps/YPermitin.FIASToolSet.DistributionDownloader/YPermitin.FIASToolSet.DistributionDownloader.csproj
index 5fb6db9..93ac99d 100644
--- a/Apps/YPermitin.FIASToolSet.DistributionDownloader/YPermitin.FIASToolSet.DistributionDownloader.csproj
+++ b/Apps/YPermitin.FIASToolSet.DistributionDownloader/YPermitin.FIASToolSet.DistributionDownloader.csproj
@@ -4,7 +4,7 @@
Exe
net6.0
enable
- enable
+ disable
diff --git a/Libs/YPermitin.FIASToolSet.DistributionBrowser/YPermitin.FIASToolSet.DistributionBrowser.csproj b/Libs/YPermitin.FIASToolSet.DistributionBrowser/YPermitin.FIASToolSet.DistributionBrowser.csproj
index 21a2c35..261a65f 100644
--- a/Libs/YPermitin.FIASToolSet.DistributionBrowser/YPermitin.FIASToolSet.DistributionBrowser.csproj
+++ b/Libs/YPermitin.FIASToolSet.DistributionBrowser/YPermitin.FIASToolSet.DistributionBrowser.csproj
@@ -9,10 +9,12 @@
1701;1702;1591
+ YPermitin.FIASToolSet.DistributionBrowser.xml
1701;1702;1591
+ YPermitin.FIASToolSet.DistributionBrowser.xml
@@ -20,16 +22,6 @@
-
-
- PreserveNewest
-
-
-
-
-
-
-
ResXFileCodeGenerator
@@ -45,4 +37,8 @@
+
+
+
+
diff --git a/Libs/YPermitin.FIASToolSet.DistributionBrowser/YPermitin.FIASToolSet.Loader.xml b/Libs/YPermitin.FIASToolSet.DistributionBrowser/YPermitin.FIASToolSet.DistributionBrowser.xml
similarity index 100%
rename from Libs/YPermitin.FIASToolSet.DistributionBrowser/YPermitin.FIASToolSet.Loader.xml
rename to Libs/YPermitin.FIASToolSet.DistributionBrowser/YPermitin.FIASToolSet.DistributionBrowser.xml
diff --git a/Libs/YPermitin.FIASToolSet.DistributionReader/DataReaders/NormativeDocKindReader.cs b/Libs/YPermitin.FIASToolSet.DistributionReader/DataReaders/NormativeDocKindReader.cs
new file mode 100644
index 0000000..6443877
--- /dev/null
+++ b/Libs/YPermitin.FIASToolSet.DistributionReader/DataReaders/NormativeDocKindReader.cs
@@ -0,0 +1,108 @@
+using System.Collections;
+using System.Xml;
+using YPermitin.FIASToolSet.DistributionReader.Models;
+
+namespace YPermitin.FIASToolSet.DistributionReader.DataReaders;
+
+public class NormativeDocKindReader : IEnumerable
+{
+ private readonly string _dataFilePath;
+ private NormativeDocKindEnumerator _enumerator;
+
+ public NormativeDocKindReader(string dataFilePath)
+ {
+ _dataFilePath = dataFilePath;
+ }
+
+ public IEnumerator GetEnumerator()
+ {
+ if (_enumerator == null)
+ {
+ _enumerator = new NormativeDocKindEnumerator(_dataFilePath);
+ }
+
+ return _enumerator;
+ }
+
+ IEnumerator IEnumerable.GetEnumerator()
+ {
+ return GetEnumerator();
+ }
+
+ public class NormativeDocKindEnumerator : IEnumerator
+ {
+ private readonly string _dataFilePath;
+
+ private NormativeDocKind _current;
+
+ private XmlReader _reader;
+ private XmlReader Reader {
+ get
+ {
+ if (_reader == null)
+ {
+ _reader = XmlReader.Create(_dataFilePath);
+ }
+ return _reader;
+ }
+ }
+
+ public NormativeDocKindEnumerator(string dataFilePath)
+ {
+ _dataFilePath = dataFilePath;
+ }
+
+ public NormativeDocKind Current => _current;
+
+ object IEnumerator.Current => Current;
+
+ public bool MoveNext()
+ {
+ while (Reader.Read())
+ {
+ if (Reader.Name == "NDOCKIND")
+ {
+ var idValue = Reader.GetAttribute("ID");
+ var nameValue = Reader.GetAttribute("NAME");
+
+ if(int.TryParse(idValue, out int id))
+ {
+ var newObject = new NormativeDocKind(id, nameValue);
+ _current = newObject;
+ return true;
+ }
+ else
+ {
+ _current = null;
+ }
+ }
+ }
+
+ DisposeXmlReader();
+ return false;
+ }
+
+ public void Reset()
+ {
+ DisposeXmlReader();
+ }
+
+ public void Dispose()
+ {
+ DisposeXmlReader();
+ }
+
+ private void DisposeXmlReader()
+ {
+ if (_reader != null)
+ {
+ if(_reader.ReadState != ReadState.Closed)
+ _reader.Close();
+
+ _reader.Dispose();
+
+ _reader = null;
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/Libs/YPermitin.FIASToolSet.DistributionReader/Exceptions/FIASBadDataException.cs b/Libs/YPermitin.FIASToolSet.DistributionReader/Exceptions/FIASBadDataException.cs
new file mode 100644
index 0000000..47e0b45
--- /dev/null
+++ b/Libs/YPermitin.FIASToolSet.DistributionReader/Exceptions/FIASBadDataException.cs
@@ -0,0 +1,8 @@
+namespace YPermitin.FIASToolSet.DistributionReader.Exceptions;
+
+public class FIASBadDataException : Exception
+{
+ public FIASBadDataException(string message) : base(message)
+ {
+ }
+}
\ No newline at end of file
diff --git a/Libs/YPermitin.FIASToolSet.DistributionReader/Exceptions/FIASDataNotFoundException.cs b/Libs/YPermitin.FIASToolSet.DistributionReader/Exceptions/FIASDataNotFoundException.cs
new file mode 100644
index 0000000..c769e7c
--- /dev/null
+++ b/Libs/YPermitin.FIASToolSet.DistributionReader/Exceptions/FIASDataNotFoundException.cs
@@ -0,0 +1,11 @@
+namespace YPermitin.FIASToolSet.DistributionReader.Exceptions;
+
+public class FIASDataNotFoundException : Exception
+{
+ private readonly string FilePath;
+
+ public FIASDataNotFoundException(string message, string filePath) : base(message)
+ {
+ FilePath = filePath;
+ }
+}
\ No newline at end of file
diff --git a/Libs/YPermitin.FIASToolSet.DistributionReader/FIASDistributionReader.cs b/Libs/YPermitin.FIASToolSet.DistributionReader/FIASDistributionReader.cs
new file mode 100644
index 0000000..e8dbfc8
--- /dev/null
+++ b/Libs/YPermitin.FIASToolSet.DistributionReader/FIASDistributionReader.cs
@@ -0,0 +1,85 @@
+using YPermitin.FIASToolSet.DistributionReader.DataReaders;
+using YPermitin.FIASToolSet.DistributionReader.Exceptions;
+using YPermitin.FIASToolSet.DistributionReader.Models;
+
+namespace YPermitin.FIASToolSet.DistributionReader;
+
+public class FIASDistributionReader
+{
+ private readonly string _workingDirectory;
+
+ public FIASDistributionReader(string workingDirectory)
+ {
+ _workingDirectory = workingDirectory;
+ }
+
+ ///
+ /// Получение версии дистрибутива ФИАС в строковм виде
+ ///
+ /// Строка с информацией о версии ФИАС
+ /// Не удалось найти файл с информацией о версии
+ public string GetVersionAsString()
+ {
+ string fileVersionInfoPath = Path.Combine(
+ _workingDirectory,
+ "version.txt"
+ );
+
+ string version;
+
+ if (File.Exists(fileVersionInfoPath))
+ {
+ version = File.ReadAllText(fileVersionInfoPath).Trim();
+ }
+ else
+ {
+ throw new FIASDataNotFoundException("Не обнаружен файл с информацией о версии.", fileVersionInfoPath);
+ }
+
+ return version;
+ }
+
+ ///
+ /// Получение версии дистрибутива ФИАС в числовом виде
+ ///
+ /// Версия ФИАС числом
+ /// Не удалось конвертировать значение версии ФИАС в число
+ public int GetVersion()
+ {
+ string versionAsString = GetVersionAsString();
+
+ if (int.TryParse(versionAsString.Replace(".", string.Empty), out int versionAsInt))
+ {
+ return versionAsInt;
+ }
+ else
+ {
+ var exceptionObject = new FIASBadDataException(
+ $"Не удалось конвертировать значение версии \"{versionAsString}\" в числовой формат.");
+ exceptionObject.Data.Add("VersionAsString", versionAsString);
+ throw exceptionObject;
+ }
+ }
+
+ public NormativeDocKindReader GetNormativeDocKinds()
+ {
+ string fileNormativeDocKindsPath;
+ var foundFiles = Directory.GetFiles(_workingDirectory, "AS_NORMATIVE_DOCS_KINDS_20230706_*.XML");
+ if (foundFiles.Length == 1)
+ {
+ FileInfo foundFileInfo = new FileInfo(foundFiles[0]);
+ fileNormativeDocKindsPath = Path.Combine(
+ _workingDirectory,
+ foundFileInfo.Name
+ );
+ }
+ else
+ {
+ throw new FIASDataNotFoundException(
+ "Не обнаружен файл с информацией о видах нормативных документов.",
+ "AS_NORMATIVE_DOCS_KINDS_20230706_*.XML");
+ }
+
+ return new NormativeDocKindReader(fileNormativeDocKindsPath);
+ }
+}
\ No newline at end of file
diff --git a/Libs/YPermitin.FIASToolSet.DistributionReader/Models/NormativeDocKind.cs b/Libs/YPermitin.FIASToolSet.DistributionReader/Models/NormativeDocKind.cs
new file mode 100644
index 0000000..ae813b5
--- /dev/null
+++ b/Libs/YPermitin.FIASToolSet.DistributionReader/Models/NormativeDocKind.cs
@@ -0,0 +1,16 @@
+namespace YPermitin.FIASToolSet.DistributionReader.Models;
+
+///
+/// Вид нормативного документа
+///
+public class NormativeDocKind
+{
+ public readonly int Id;
+ public readonly string Name;
+
+ public NormativeDocKind(int id, string name)
+ {
+ Id = id;
+ Name = name;
+ }
+}
\ No newline at end of file
diff --git a/Libs/YPermitin.FIASToolSet.DistributionReader/YPermitin.FIASToolSet.DistributionReader.csproj b/Libs/YPermitin.FIASToolSet.DistributionReader/YPermitin.FIASToolSet.DistributionReader.csproj
new file mode 100644
index 0000000..0af0117
--- /dev/null
+++ b/Libs/YPermitin.FIASToolSet.DistributionReader/YPermitin.FIASToolSet.DistributionReader.csproj
@@ -0,0 +1,19 @@
+
+
+
+ net6.0
+ enable
+ enable
+
+
+
+ YPermitin.FIASToolSet.DistributionReader.xml
+ 1701;1702;1591;IL2121
+
+
+
+ YPermitin.FIASToolSet.DistributionReader.xml
+ 1701;1702;1591;IL2121
+
+
+
diff --git a/Libs/YPermitin.FIASToolSet.DistributionReader/YPermitin.FIASToolSet.DistributionReader.xml b/Libs/YPermitin.FIASToolSet.DistributionReader/YPermitin.FIASToolSet.DistributionReader.xml
new file mode 100644
index 0000000..e0cf3bd
--- /dev/null
+++ b/Libs/YPermitin.FIASToolSet.DistributionReader/YPermitin.FIASToolSet.DistributionReader.xml
@@ -0,0 +1,27 @@
+
+
+
+ YPermitin.FIASToolSet.DistributionReader
+
+
+
+
+ Получение версии дистрибутива ФИАС в строковм виде
+
+ Строка с информацией о версии ФИАС
+ Не удалось найти файл с информацией о версии
+
+
+
+ Получение версии дистрибутива ФИАС в числовом виде
+
+ Версия ФИАС числом
+ Не удалось конвертировать значение версии ФИАС в число
+
+
+
+ Вид нормативного документа
+
+
+
+
diff --git a/Tests/YPermitin.FIASToolSet.DistributionReader.Tests/DataCollections/AddressObjectTypeCollectionTests.cs b/Tests/YPermitin.FIASToolSet.DistributionReader.Tests/DataCollections/AddressObjectTypeCollectionTests.cs
new file mode 100644
index 0000000..5b509a9
--- /dev/null
+++ b/Tests/YPermitin.FIASToolSet.DistributionReader.Tests/DataCollections/AddressObjectTypeCollectionTests.cs
@@ -0,0 +1,41 @@
+using System;
+using System.IO;
+using System.Linq;
+using NUnit.Framework;
+using YPermitin.FIASToolSet.DistributionReader.DataReaders;
+
+namespace YPermitin.FIASToolSet.DistributionReader.Tests.DataReaders;
+
+public class AddressObjectTypeCollectionTests
+{
+ private readonly string _dataFile;
+
+ public AddressObjectTypeCollectionTests()
+ {
+ _dataFile = Path.Combine(
+ Directory.GetCurrentDirectory(),
+ "SampleData",
+ "AS_ADDR_OBJ_TYPES_20230706_42f95bf4-bebe-4e6a-ac02-00ab1f652505.XML"
+ );
+ }
+
+ [Test]
+ public void ReadItems()
+ {
+ var collection = new AddressObjectTypeCollection(_dataFile);
+ var allItems = collection.ToList();
+
+ Assert.NotNull(allItems);
+ Assert.IsNotEmpty(allItems);
+ Assert.AreEqual(421, allItems.Count);
+
+ Assert.AreEqual(5, allItems[0].Id);
+ Assert.AreEqual(1, allItems[0].Level);
+ Assert.AreEqual("Автономная область", allItems[0].Name);
+ Assert.AreEqual("Аобл", allItems[0].ShortName);
+ Assert.AreEqual("Автономная область", allItems[0].Description);
+ Assert.AreEqual(new DateOnly(1900, 1, 1), allItems[0].StartDate);
+ Assert.AreEqual(new DateOnly(2015, 11, 5), allItems[0].EndDate);
+ Assert.AreEqual(new DateOnly(1900, 1, 1), allItems[0].UpdateDate);
+ }
+}
\ No newline at end of file
diff --git a/Tests/YPermitin.FIASToolSet.DistributionReader.Tests/DataCollections/ApartmentTypeCollectionTests.cs b/Tests/YPermitin.FIASToolSet.DistributionReader.Tests/DataCollections/ApartmentTypeCollectionTests.cs
new file mode 100644
index 0000000..bb8b2f3
--- /dev/null
+++ b/Tests/YPermitin.FIASToolSet.DistributionReader.Tests/DataCollections/ApartmentTypeCollectionTests.cs
@@ -0,0 +1,41 @@
+using System;
+using System.IO;
+using System.Linq;
+using NUnit.Framework;
+using YPermitin.FIASToolSet.DistributionReader.DataReaders;
+
+namespace YPermitin.FIASToolSet.DistributionReader.Tests.DataReaders;
+
+public class ApartmentTypeCollectionTests
+{
+ private readonly string _dataFile;
+
+ public ApartmentTypeCollectionTests()
+ {
+ _dataFile = Path.Combine(
+ Directory.GetCurrentDirectory(),
+ "SampleData",
+ "AS_APARTMENT_TYPES_20230706_e4450931-ca64-4b45-b04d-65471519ddc8.XML"
+ );
+ }
+
+ [Test]
+ public void ReadItems()
+ {
+ var collection = new ApartmentTypeCollection(_dataFile);
+ var allItems = collection.ToList();
+
+ Assert.NotNull(allItems);
+ Assert.IsNotEmpty(allItems);
+ Assert.AreEqual(13, allItems.Count);
+
+ Assert.AreEqual(1, allItems[0].Id);
+ Assert.AreEqual("Помещение", allItems[0].Name);
+ Assert.AreEqual("помещ.", allItems[0].ShortName);
+ Assert.AreEqual("Помещение", allItems[0].Description);
+ Assert.AreEqual(new DateOnly(1900, 1, 1), allItems[0].StartDate);
+ Assert.AreEqual(new DateOnly(2079, 6, 6), allItems[0].EndDate);
+ Assert.AreEqual(new DateOnly(1900, 1, 1), allItems[0].UpdateDate);
+ Assert.AreEqual(true, allItems[0].IsActive);
+ }
+}
\ No newline at end of file
diff --git a/Tests/YPermitin.FIASToolSet.DistributionReader.Tests/DataCollections/HouseTypeCollectionTests.cs b/Tests/YPermitin.FIASToolSet.DistributionReader.Tests/DataCollections/HouseTypeCollectionTests.cs
new file mode 100644
index 0000000..79e0d7a
--- /dev/null
+++ b/Tests/YPermitin.FIASToolSet.DistributionReader.Tests/DataCollections/HouseTypeCollectionTests.cs
@@ -0,0 +1,41 @@
+using System;
+using System.IO;
+using System.Linq;
+using NUnit.Framework;
+using YPermitin.FIASToolSet.DistributionReader.DataReaders;
+
+namespace YPermitin.FIASToolSet.DistributionReader.Tests.DataReaders;
+
+public class HouseTypeCollectionTests
+{
+ private readonly string _dataFile;
+
+ public HouseTypeCollectionTests()
+ {
+ _dataFile = Path.Combine(
+ Directory.GetCurrentDirectory(),
+ "SampleData",
+ "AS_HOUSE_TYPES_20230706_8f22a317-dbec-44e4-9db7-a686a372c1c0.XML"
+ );
+ }
+
+ [Test]
+ public void ReadItems()
+ {
+ var collection = new HouseTypeCollection(_dataFile);
+ var allItems = collection.ToList();
+
+ Assert.NotNull(allItems);
+ Assert.IsNotEmpty(allItems);
+ Assert.AreEqual(14, allItems.Count);
+
+ Assert.AreEqual(1, allItems[0].Id);
+ Assert.AreEqual("Владение", allItems[0].Name);
+ Assert.AreEqual("влд.", allItems[0].ShortName);
+ Assert.AreEqual("Владение", allItems[0].Description);
+ Assert.AreEqual(new DateOnly(1900, 1, 1), allItems[0].StartDate);
+ Assert.AreEqual(new DateOnly(2015, 11, 5), allItems[0].EndDate);
+ Assert.AreEqual(new DateOnly(1900, 1, 1), allItems[0].UpdateDate);
+ Assert.AreEqual(false, allItems[0].IsActive);
+ }
+}
\ No newline at end of file
diff --git a/Tests/YPermitin.FIASToolSet.DistributionReader.Tests/DataCollections/NormativeDocKindCollectionTests.cs b/Tests/YPermitin.FIASToolSet.DistributionReader.Tests/DataCollections/NormativeDocKindCollectionTests.cs
new file mode 100644
index 0000000..104dd26
--- /dev/null
+++ b/Tests/YPermitin.FIASToolSet.DistributionReader.Tests/DataCollections/NormativeDocKindCollectionTests.cs
@@ -0,0 +1,34 @@
+using System.IO;
+using System.Linq;
+using NUnit.Framework;
+using YPermitin.FIASToolSet.DistributionReader.DataReaders;
+
+namespace YPermitin.FIASToolSet.DistributionReader.Tests.DataReaders;
+
+public class NormativeDocKindCollectionTests
+{
+ private readonly string _dataFile;
+
+ public NormativeDocKindCollectionTests()
+ {
+ _dataFile = Path.Combine(
+ Directory.GetCurrentDirectory(),
+ "SampleData",
+ "AS_NORMATIVE_DOCS_KINDS_20230706_3ffe3a9e-70c3-44a0-9d94-03ada524851d.XML"
+ );
+ }
+
+ [Test]
+ public void ReadItems()
+ {
+ var collection = new NormativeDocKindCollection(_dataFile);
+ var allItems = collection.ToList();
+
+ Assert.NotNull(allItems);
+ Assert.IsNotEmpty(allItems);
+ Assert.AreEqual(4, allItems.Count);
+
+ Assert.AreEqual(0, allItems[0].Id);
+ Assert.AreEqual("Не определено", allItems[0].Name);
+ }
+}
\ No newline at end of file
diff --git a/Tests/YPermitin.FIASToolSet.DistributionReader.Tests/DataCollections/NormativeDocTypeCollectionTests.cs b/Tests/YPermitin.FIASToolSet.DistributionReader.Tests/DataCollections/NormativeDocTypeCollectionTests.cs
new file mode 100644
index 0000000..51c580f
--- /dev/null
+++ b/Tests/YPermitin.FIASToolSet.DistributionReader.Tests/DataCollections/NormativeDocTypeCollectionTests.cs
@@ -0,0 +1,37 @@
+using System;
+using System.IO;
+using System.Linq;
+using NUnit.Framework;
+using YPermitin.FIASToolSet.DistributionReader.DataReaders;
+
+namespace YPermitin.FIASToolSet.DistributionReader.Tests.DataReaders;
+
+public class NormativeDocTypeCollectionTests
+{
+ private readonly string _dataFile;
+
+ public NormativeDocTypeCollectionTests()
+ {
+ _dataFile = Path.Combine(
+ Directory.GetCurrentDirectory(),
+ "SampleData",
+ "AS_NORMATIVE_DOCS_TYPES_20230706_35b52e02-e36e-4583-bc20-9d1a81c6c4c2.XML"
+ );
+ }
+
+ [Test]
+ public void ReadItems()
+ {
+ var collection = new NormativeDocTypeCollection(_dataFile);
+ var allItems = collection.ToList();
+
+ Assert.NotNull(allItems);
+ Assert.IsNotEmpty(allItems);
+ Assert.AreEqual(25, allItems.Count);
+
+ Assert.AreEqual(0, allItems[0].Id);
+ Assert.AreEqual("Не указан", allItems[0].Name);
+ Assert.AreEqual(new DateOnly(1900, 1, 1), allItems[0].StartDate);
+ Assert.AreEqual(new DateOnly(2016, 3, 31), allItems[0].EndDate);
+ }
+}
\ No newline at end of file
diff --git a/Tests/YPermitin.FIASToolSet.DistributionReader.Tests/DataCollections/ObjectLevelCollectionTests.cs b/Tests/YPermitin.FIASToolSet.DistributionReader.Tests/DataCollections/ObjectLevelCollectionTests.cs
new file mode 100644
index 0000000..e9016de
--- /dev/null
+++ b/Tests/YPermitin.FIASToolSet.DistributionReader.Tests/DataCollections/ObjectLevelCollectionTests.cs
@@ -0,0 +1,39 @@
+using System;
+using System.IO;
+using System.Linq;
+using NUnit.Framework;
+using YPermitin.FIASToolSet.DistributionReader.DataReaders;
+
+namespace YPermitin.FIASToolSet.DistributionReader.Tests.DataReaders;
+
+public class ObjectLevelCollectionTests
+{
+ private readonly string _dataFile;
+
+ public ObjectLevelCollectionTests()
+ {
+ _dataFile = Path.Combine(
+ Directory.GetCurrentDirectory(),
+ "SampleData",
+ "AS_OBJECT_LEVELS_20230706_4d4c4dfd-b0ce-4596-b923-e687d5118e42.XML"
+ );
+ }
+
+ [Test]
+ public void ReadItems()
+ {
+ var collection = new ObjectLevelCollection(_dataFile);
+ var allItems = collection.ToList();
+
+ Assert.NotNull(allItems);
+ Assert.IsNotEmpty(allItems);
+ Assert.AreEqual(17, allItems.Count);
+
+ Assert.AreEqual(1, allItems[0].Level);
+ Assert.AreEqual("Субъект РФ", allItems[0].Name);
+ Assert.AreEqual(new DateOnly(1900, 1, 1), allItems[0].StartDate);
+ Assert.AreEqual(new DateOnly(2079, 6, 6), allItems[0].EndDate);
+ Assert.AreEqual(new DateOnly(1900, 1, 1), allItems[0].UpdateDate);
+ Assert.AreEqual(true, allItems[0].IsActive);
+ }
+}
\ No newline at end of file
diff --git a/Tests/YPermitin.FIASToolSet.DistributionReader.Tests/DataCollections/OperationTypeCollectionTests.cs b/Tests/YPermitin.FIASToolSet.DistributionReader.Tests/DataCollections/OperationTypeCollectionTests.cs
new file mode 100644
index 0000000..285fcb0
--- /dev/null
+++ b/Tests/YPermitin.FIASToolSet.DistributionReader.Tests/DataCollections/OperationTypeCollectionTests.cs
@@ -0,0 +1,39 @@
+using System;
+using System.IO;
+using System.Linq;
+using NUnit.Framework;
+using YPermitin.FIASToolSet.DistributionReader.DataReaders;
+
+namespace YPermitin.FIASToolSet.DistributionReader.Tests.DataReaders;
+
+public class OperationTypeCollectionTests
+{
+ private readonly string _dataFile;
+
+ public OperationTypeCollectionTests()
+ {
+ _dataFile = Path.Combine(
+ Directory.GetCurrentDirectory(),
+ "SampleData",
+ "AS_OPERATION_TYPES_20230706_39508983-2c70-485d-98ac-53bad8c38ec5.XML"
+ );
+ }
+
+ [Test]
+ public void ReadItems()
+ {
+ var collection = new OperationTypeCollection(_dataFile);
+ var allItems = collection.ToList();
+
+ Assert.NotNull(allItems);
+ Assert.IsNotEmpty(allItems);
+ Assert.AreEqual(27, allItems.Count);
+
+ Assert.AreEqual(0, allItems[0].Id);
+ Assert.AreEqual("Не определено", allItems[0].Name);
+ Assert.AreEqual(new DateOnly(1900, 1, 1), allItems[0].StartDate);
+ Assert.AreEqual(new DateOnly(2079, 6, 6), allItems[0].EndDate);
+ Assert.AreEqual(new DateOnly(1900, 1, 1), allItems[0].UpdateDate);
+ Assert.AreEqual(true, allItems[0].IsActive);
+ }
+}
\ No newline at end of file
diff --git a/Tests/YPermitin.FIASToolSet.DistributionReader.Tests/DataCollections/ParameterTypeCollectionTests.cs b/Tests/YPermitin.FIASToolSet.DistributionReader.Tests/DataCollections/ParameterTypeCollectionTests.cs
new file mode 100644
index 0000000..6f9c7ae
--- /dev/null
+++ b/Tests/YPermitin.FIASToolSet.DistributionReader.Tests/DataCollections/ParameterTypeCollectionTests.cs
@@ -0,0 +1,41 @@
+using System;
+using System.IO;
+using System.Linq;
+using NUnit.Framework;
+using YPermitin.FIASToolSet.DistributionReader.DataReaders;
+
+namespace YPermitin.FIASToolSet.DistributionReader.Tests.DataReaders;
+
+public class ParameterTypeCollectionTests
+{
+ private readonly string _dataFile;
+
+ public ParameterTypeCollectionTests()
+ {
+ _dataFile = Path.Combine(
+ Directory.GetCurrentDirectory(),
+ "SampleData",
+ "AS_PARAM_TYPES_20230706_5c240782-bd40-44dd-a3fd-2c84c42c6c22.XML"
+ );
+ }
+
+ [Test]
+ public void ReadItems()
+ {
+ var collection = new ParameterTypeCollection(_dataFile);
+ var allItems = collection.ToList();
+
+ Assert.NotNull(allItems);
+ Assert.IsNotEmpty(allItems);
+ Assert.AreEqual(19, allItems.Count);
+
+ Assert.AreEqual(1, allItems[0].Id);
+ Assert.AreEqual("ИФНС ФЛ", allItems[0].Name);
+ Assert.AreEqual("ИФНС ФЛ", allItems[0].Description);
+ Assert.AreEqual("IFNSFL", allItems[0].Code);
+ Assert.AreEqual(new DateOnly(2011, 11, 1), allItems[0].StartDate);
+ Assert.AreEqual(new DateOnly(2079, 6, 6), allItems[0].EndDate);
+ Assert.AreEqual(new DateOnly(2018, 6, 15), allItems[0].UpdateDate);
+ Assert.AreEqual(true, allItems[0].IsActive);
+ }
+}
\ No newline at end of file
diff --git a/Tests/YPermitin.FIASToolSet.DistributionReader.Tests/DataCollections/RoomTypeCollectionTests.cs b/Tests/YPermitin.FIASToolSet.DistributionReader.Tests/DataCollections/RoomTypeCollectionTests.cs
new file mode 100644
index 0000000..af71e17
--- /dev/null
+++ b/Tests/YPermitin.FIASToolSet.DistributionReader.Tests/DataCollections/RoomTypeCollectionTests.cs
@@ -0,0 +1,40 @@
+using System;
+using System.IO;
+using System.Linq;
+using NUnit.Framework;
+using YPermitin.FIASToolSet.DistributionReader.DataReaders;
+
+namespace YPermitin.FIASToolSet.DistributionReader.Tests.DataReaders;
+
+public class RoomTypeCollectionTests
+{
+ private readonly string _dataFile;
+
+ public RoomTypeCollectionTests()
+ {
+ _dataFile = Path.Combine(
+ Directory.GetCurrentDirectory(),
+ "SampleData",
+ "AS_ROOM_TYPES_20230706_190ba38d-fe2d-4afc-a5f7-6330669f570e.XML"
+ );
+ }
+
+ [Test]
+ public void ReadItems()
+ {
+ var collection = new RoomTypeCollection(_dataFile);
+ var allItems = collection.ToList();
+
+ Assert.NotNull(allItems);
+ Assert.IsNotEmpty(allItems);
+ Assert.AreEqual(3, allItems.Count);
+
+ Assert.AreEqual(0, allItems[0].Id);
+ Assert.AreEqual("Не определено", allItems[0].Name);
+ Assert.AreEqual("Не определено", allItems[0].Description);
+ Assert.AreEqual(new DateOnly(1900, 1, 1), allItems[0].StartDate);
+ Assert.AreEqual(new DateOnly(2015, 11, 5), allItems[0].EndDate);
+ Assert.AreEqual(new DateOnly(2011, 1, 1), allItems[0].UpdateDate);
+ Assert.AreEqual(true, allItems[0].IsActive);
+ }
+}
\ No newline at end of file
diff --git a/Tests/YPermitin.FIASToolSet.DistributionReader.Tests/FIASDistributionReaderTests.cs b/Tests/YPermitin.FIASToolSet.DistributionReader.Tests/FIASDistributionReaderTests.cs
new file mode 100644
index 0000000..9bfc343
--- /dev/null
+++ b/Tests/YPermitin.FIASToolSet.DistributionReader.Tests/FIASDistributionReaderTests.cs
@@ -0,0 +1,227 @@
+using System;
+using System.IO;
+using System.Linq;
+using NUnit.Framework;
+
+namespace YPermitin.FIASToolSet.DistributionReader.Tests;
+
+public class Tests
+{
+ private readonly string _workingDirectory;
+
+ public Tests()
+ {
+ _workingDirectory = Path.Combine(
+ Directory.GetCurrentDirectory(),
+ "SampleData"
+ );
+ }
+
+ [SetUp]
+ public void Setup()
+ {
+ }
+
+ [Test]
+ public void GetVersionAsStringTest()
+ {
+ FIASDistributionReader reader = new FIASDistributionReader(_workingDirectory);
+
+ string version = reader.GetVersionAsString();
+
+ Assert.IsNotNull(version);
+ }
+
+ [Test]
+ public void GetVersionTest()
+ {
+ FIASDistributionReader reader = new FIASDistributionReader(_workingDirectory);
+
+ int version = reader.GetVersion();
+
+ Assert.True(version > 0);
+ }
+
+ [Test]
+ public void GetNormativeDocKindsTest()
+ {
+ FIASDistributionReader reader = new FIASDistributionReader(_workingDirectory);
+
+ var collection = reader.GetNormativeDocKinds();
+ var allItems = collection.ToList();
+
+ Assert.NotNull(allItems);
+ Assert.IsNotEmpty(allItems);
+ Assert.AreEqual(4, allItems.Count);
+
+ Assert.AreEqual(0, allItems[0].Id);
+ Assert.AreEqual("Не определено", allItems[0].Name);
+ }
+
+ [Test]
+ public void GetNormativeDocTypesTest()
+ {
+ FIASDistributionReader reader = new FIASDistributionReader(_workingDirectory);
+
+ var collection = reader.GetNormativeDocTypes();
+ var allItems = collection.ToList();
+
+ Assert.NotNull(allItems);
+ Assert.IsNotEmpty(allItems);
+ Assert.AreEqual(25, allItems.Count);
+
+ Assert.AreEqual(0, allItems[0].Id);
+ Assert.AreEqual("Не указан", allItems[0].Name);
+ Assert.AreEqual(new DateOnly(1900, 1, 1), allItems[0].StartDate);
+ Assert.AreEqual(new DateOnly(2016, 3, 31), allItems[0].EndDate);
+ }
+
+ [Test]
+ public void GetObjectLevelsTest()
+ {
+ FIASDistributionReader reader = new FIASDistributionReader(_workingDirectory);
+
+ var collection = reader.GetObjectLevels();
+ var allItems = collection.ToList();
+
+ Assert.NotNull(allItems);
+ Assert.IsNotEmpty(allItems);
+ Assert.AreEqual(17, allItems.Count);
+
+ Assert.AreEqual(1, allItems[0].Level);
+ Assert.AreEqual("Субъект РФ", allItems[0].Name);
+ Assert.AreEqual(new DateOnly(1900, 1, 1), allItems[0].StartDate);
+ Assert.AreEqual(new DateOnly(2079, 6, 6), allItems[0].EndDate);
+ Assert.AreEqual(new DateOnly(1900, 1, 1), allItems[0].UpdateDate);
+ Assert.AreEqual(true, allItems[0].IsActive);
+ }
+
+ [Test]
+ public void GetRoomTypesTest()
+ {
+ FIASDistributionReader reader = new FIASDistributionReader(_workingDirectory);
+
+ var collection = reader.GetRoomTypes();
+ var allItems = collection.ToList();
+
+ Assert.NotNull(allItems);
+ Assert.IsNotEmpty(allItems);
+ Assert.AreEqual(3, allItems.Count);
+
+ Assert.AreEqual(0, allItems[0].Id);
+ Assert.AreEqual("Не определено", allItems[0].Name);
+ Assert.AreEqual("Не определено", allItems[0].Description);
+ Assert.AreEqual(new DateOnly(1900, 1, 1), allItems[0].StartDate);
+ Assert.AreEqual(new DateOnly(2015, 11, 5), allItems[0].EndDate);
+ Assert.AreEqual(new DateOnly(2011, 1, 1), allItems[0].UpdateDate);
+ Assert.AreEqual(true, allItems[0].IsActive);
+ }
+
+ [Test]
+ public void GetApartmentTypesTest()
+ {
+ FIASDistributionReader reader = new FIASDistributionReader(_workingDirectory);
+
+ var collection = reader.GetApartmentTypes();
+ var allItems = collection.ToList();
+
+ Assert.NotNull(allItems);
+ Assert.IsNotEmpty(allItems);
+ Assert.AreEqual(13, allItems.Count);
+
+ Assert.AreEqual(1, allItems[0].Id);
+ Assert.AreEqual("Помещение", allItems[0].Name);
+ Assert.AreEqual("помещ.", allItems[0].ShortName);
+ Assert.AreEqual("Помещение", allItems[0].Description);
+ Assert.AreEqual(new DateOnly(1900, 1, 1), allItems[0].StartDate);
+ Assert.AreEqual(new DateOnly(2079, 6, 6), allItems[0].EndDate);
+ Assert.AreEqual(new DateOnly(1900, 1, 1), allItems[0].UpdateDate);
+ Assert.AreEqual(true, allItems[0].IsActive);
+ }
+
+ [Test]
+ public void GetHouseTypesTest()
+ {
+ FIASDistributionReader reader = new FIASDistributionReader(_workingDirectory);
+
+ var collection = reader.GetHouseTypes();
+ var allItems = collection.ToList();
+
+ Assert.NotNull(allItems);
+ Assert.IsNotEmpty(allItems);
+ Assert.AreEqual(14, allItems.Count);
+
+ Assert.AreEqual(1, allItems[0].Id);
+ Assert.AreEqual("Владение", allItems[0].Name);
+ Assert.AreEqual("влд.", allItems[0].ShortName);
+ Assert.AreEqual("Владение", allItems[0].Description);
+ Assert.AreEqual(new DateOnly(1900, 1, 1), allItems[0].StartDate);
+ Assert.AreEqual(new DateOnly(2015, 11, 5), allItems[0].EndDate);
+ Assert.AreEqual(new DateOnly(1900, 1, 1), allItems[0].UpdateDate);
+ Assert.AreEqual(false, allItems[0].IsActive);
+ }
+
+ [Test]
+ public void GetOperationTypesTest()
+ {
+ FIASDistributionReader reader = new FIASDistributionReader(_workingDirectory);
+
+ var collection = reader.GetOperationTypes();
+ var allItems = collection.ToList();
+
+ Assert.NotNull(allItems);
+ Assert.IsNotEmpty(allItems);
+ Assert.AreEqual(27, allItems.Count);
+
+ Assert.AreEqual(0, allItems[0].Id);
+ Assert.AreEqual("Не определено", allItems[0].Name);
+ Assert.AreEqual(new DateOnly(1900, 1, 1), allItems[0].StartDate);
+ Assert.AreEqual(new DateOnly(2079, 6, 6), allItems[0].EndDate);
+ Assert.AreEqual(new DateOnly(1900, 1, 1), allItems[0].UpdateDate);
+ Assert.AreEqual(true, allItems[0].IsActive);
+ }
+
+ [Test]
+ public void GetAddressObjectTypesTest()
+ {
+ FIASDistributionReader reader = new FIASDistributionReader(_workingDirectory);
+
+ var collection = reader.GetAddressObjectTypes();
+ var allItems = collection.ToList();
+
+ Assert.NotNull(allItems);
+ Assert.IsNotEmpty(allItems);
+ Assert.AreEqual(421, allItems.Count);
+
+ Assert.AreEqual(5, allItems[0].Id);
+ Assert.AreEqual(1, allItems[0].Level);
+ Assert.AreEqual("Автономная область", allItems[0].Name);
+ Assert.AreEqual("Аобл", allItems[0].ShortName);
+ Assert.AreEqual("Автономная область", allItems[0].Description);
+ Assert.AreEqual(new DateOnly(1900, 1, 1), allItems[0].StartDate);
+ Assert.AreEqual(new DateOnly(2015, 11, 5), allItems[0].EndDate);
+ Assert.AreEqual(new DateOnly(1900, 1, 1), allItems[0].UpdateDate);
+ }
+
+ [Test]
+ public void GetParameterTypesTest()
+ {
+ FIASDistributionReader reader = new FIASDistributionReader(_workingDirectory);
+
+ var collection = reader.GetParameterTypes();
+ var allItems = collection.ToList();
+
+ Assert.NotNull(allItems);
+ Assert.IsNotEmpty(allItems);
+ Assert.AreEqual(19, allItems.Count);
+
+ Assert.AreEqual(1, allItems[0].Id);
+ Assert.AreEqual("ИФНС ФЛ", allItems[0].Name);
+ Assert.AreEqual("ИФНС ФЛ", allItems[0].Description);
+ Assert.AreEqual("IFNSFL", allItems[0].Code);
+ Assert.AreEqual(new DateOnly(2011, 11, 1), allItems[0].StartDate);
+ Assert.AreEqual(new DateOnly(2079, 6, 6), allItems[0].EndDate);
+ Assert.AreEqual(new DateOnly(2018, 6, 15), allItems[0].UpdateDate);
+ Assert.AreEqual(true, allItems[0].IsActive);
+ }
+}
\ No newline at end of file
diff --git a/Tests/YPermitin.FIASToolSet.DistributionReader.Tests/SampleData/AS_ADDR_OBJ_TYPES_20230706_42f95bf4-bebe-4e6a-ac02-00ab1f652505.XML b/Tests/YPermitin.FIASToolSet.DistributionReader.Tests/SampleData/AS_ADDR_OBJ_TYPES_20230706_42f95bf4-bebe-4e6a-ac02-00ab1f652505.XML
new file mode 100644
index 0000000..a9ed460
--- /dev/null
+++ b/Tests/YPermitin.FIASToolSet.DistributionReader.Tests/SampleData/AS_ADDR_OBJ_TYPES_20230706_42f95bf4-bebe-4e6a-ac02-00ab1f652505.XML
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/Tests/YPermitin.FIASToolSet.DistributionReader.Tests/SampleData/AS_APARTMENT_TYPES_20230706_e4450931-ca64-4b45-b04d-65471519ddc8.XML b/Tests/YPermitin.FIASToolSet.DistributionReader.Tests/SampleData/AS_APARTMENT_TYPES_20230706_e4450931-ca64-4b45-b04d-65471519ddc8.XML
new file mode 100644
index 0000000..46ae32e
--- /dev/null
+++ b/Tests/YPermitin.FIASToolSet.DistributionReader.Tests/SampleData/AS_APARTMENT_TYPES_20230706_e4450931-ca64-4b45-b04d-65471519ddc8.XML
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/Tests/YPermitin.FIASToolSet.DistributionReader.Tests/SampleData/AS_HOUSE_TYPES_20230706_8f22a317-dbec-44e4-9db7-a686a372c1c0.XML b/Tests/YPermitin.FIASToolSet.DistributionReader.Tests/SampleData/AS_HOUSE_TYPES_20230706_8f22a317-dbec-44e4-9db7-a686a372c1c0.XML
new file mode 100644
index 0000000..a7d0993
--- /dev/null
+++ b/Tests/YPermitin.FIASToolSet.DistributionReader.Tests/SampleData/AS_HOUSE_TYPES_20230706_8f22a317-dbec-44e4-9db7-a686a372c1c0.XML
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/Tests/YPermitin.FIASToolSet.DistributionReader.Tests/SampleData/AS_NORMATIVE_DOCS_KINDS_20230706_3ffe3a9e-70c3-44a0-9d94-03ada524851d.XML b/Tests/YPermitin.FIASToolSet.DistributionReader.Tests/SampleData/AS_NORMATIVE_DOCS_KINDS_20230706_3ffe3a9e-70c3-44a0-9d94-03ada524851d.XML
new file mode 100644
index 0000000..b7fd616
--- /dev/null
+++ b/Tests/YPermitin.FIASToolSet.DistributionReader.Tests/SampleData/AS_NORMATIVE_DOCS_KINDS_20230706_3ffe3a9e-70c3-44a0-9d94-03ada524851d.XML
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/Tests/YPermitin.FIASToolSet.DistributionReader.Tests/SampleData/AS_NORMATIVE_DOCS_TYPES_20230706_35b52e02-e36e-4583-bc20-9d1a81c6c4c2.XML b/Tests/YPermitin.FIASToolSet.DistributionReader.Tests/SampleData/AS_NORMATIVE_DOCS_TYPES_20230706_35b52e02-e36e-4583-bc20-9d1a81c6c4c2.XML
new file mode 100644
index 0000000..15a1998
--- /dev/null
+++ b/Tests/YPermitin.FIASToolSet.DistributionReader.Tests/SampleData/AS_NORMATIVE_DOCS_TYPES_20230706_35b52e02-e36e-4583-bc20-9d1a81c6c4c2.XML
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/Tests/YPermitin.FIASToolSet.DistributionReader.Tests/SampleData/AS_OBJECT_LEVELS_20230706_4d4c4dfd-b0ce-4596-b923-e687d5118e42.XML b/Tests/YPermitin.FIASToolSet.DistributionReader.Tests/SampleData/AS_OBJECT_LEVELS_20230706_4d4c4dfd-b0ce-4596-b923-e687d5118e42.XML
new file mode 100644
index 0000000..89219a3
--- /dev/null
+++ b/Tests/YPermitin.FIASToolSet.DistributionReader.Tests/SampleData/AS_OBJECT_LEVELS_20230706_4d4c4dfd-b0ce-4596-b923-e687d5118e42.XML
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/Tests/YPermitin.FIASToolSet.DistributionReader.Tests/SampleData/AS_OPERATION_TYPES_20230706_39508983-2c70-485d-98ac-53bad8c38ec5.XML b/Tests/YPermitin.FIASToolSet.DistributionReader.Tests/SampleData/AS_OPERATION_TYPES_20230706_39508983-2c70-485d-98ac-53bad8c38ec5.XML
new file mode 100644
index 0000000..30382b5
--- /dev/null
+++ b/Tests/YPermitin.FIASToolSet.DistributionReader.Tests/SampleData/AS_OPERATION_TYPES_20230706_39508983-2c70-485d-98ac-53bad8c38ec5.XML
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/Tests/YPermitin.FIASToolSet.DistributionReader.Tests/SampleData/AS_PARAM_TYPES_20230706_5c240782-bd40-44dd-a3fd-2c84c42c6c22.XML b/Tests/YPermitin.FIASToolSet.DistributionReader.Tests/SampleData/AS_PARAM_TYPES_20230706_5c240782-bd40-44dd-a3fd-2c84c42c6c22.XML
new file mode 100644
index 0000000..3725872
--- /dev/null
+++ b/Tests/YPermitin.FIASToolSet.DistributionReader.Tests/SampleData/AS_PARAM_TYPES_20230706_5c240782-bd40-44dd-a3fd-2c84c42c6c22.XML
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/Tests/YPermitin.FIASToolSet.DistributionReader.Tests/SampleData/AS_ROOM_TYPES_20230706_190ba38d-fe2d-4afc-a5f7-6330669f570e.XML b/Tests/YPermitin.FIASToolSet.DistributionReader.Tests/SampleData/AS_ROOM_TYPES_20230706_190ba38d-fe2d-4afc-a5f7-6330669f570e.XML
new file mode 100644
index 0000000..90f6b5b
--- /dev/null
+++ b/Tests/YPermitin.FIASToolSet.DistributionReader.Tests/SampleData/AS_ROOM_TYPES_20230706_190ba38d-fe2d-4afc-a5f7-6330669f570e.XML
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/Tests/YPermitin.FIASToolSet.DistributionReader.Tests/SampleData/version.txt b/Tests/YPermitin.FIASToolSet.DistributionReader.Tests/SampleData/version.txt
new file mode 100644
index 0000000..c9010e3
--- /dev/null
+++ b/Tests/YPermitin.FIASToolSet.DistributionReader.Tests/SampleData/version.txt
@@ -0,0 +1 @@
+2023.07.07
\ No newline at end of file
diff --git a/Tests/YPermitin.FIASToolSet.DistributionReader.Tests/YPermitin.FIASToolSet.DistributionReader.Tests.csproj b/Tests/YPermitin.FIASToolSet.DistributionReader.Tests/YPermitin.FIASToolSet.DistributionReader.Tests.csproj
new file mode 100644
index 0000000..0cd9ff9
--- /dev/null
+++ b/Tests/YPermitin.FIASToolSet.DistributionReader.Tests/YPermitin.FIASToolSet.DistributionReader.Tests.csproj
@@ -0,0 +1,54 @@
+
+
+
+ net6.0
+ disable
+
+ false
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ PreserveNewest
+
+
+ PreserveNewest
+
+
+ PreserveNewest
+
+
+ PreserveNewest
+
+
+ PreserveNewest
+
+
+ PreserveNewest
+
+
+ PreserveNewest
+
+
+ PreserveNewest
+
+
+ PreserveNewest
+
+
+ PreserveNewest
+
+
+
+
diff --git a/YPermitin.FIASToolSet.sln b/YPermitin.FIASToolSet.sln
index 1f33cbd..f7f4f1b 100644
--- a/YPermitin.FIASToolSet.sln
+++ b/YPermitin.FIASToolSet.sln
@@ -35,6 +35,10 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Apps", "Apps", "{FAA25495-4
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "YPermitin.FIASToolSet.DistributionDownloader", "Apps\YPermitin.FIASToolSet.DistributionDownloader\YPermitin.FIASToolSet.DistributionDownloader.csproj", "{C3B585DE-1E5C-43D0-B9FE-EEA1B5673DDD}"
EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "YPermitin.FIASToolSet.DistributionReader", "Libs\YPermitin.FIASToolSet.DistributionReader\YPermitin.FIASToolSet.DistributionReader.csproj", "{68921ADE-DF52-4157-BB05-3F9280DDA725}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "YPermitin.FIASToolSet.DistributionReader.Tests", "Tests\YPermitin.FIASToolSet.DistributionReader.Tests\YPermitin.FIASToolSet.DistributionReader.Tests.csproj", "{F63B71FA-BD02-482B-89D3-E35EAD88BF15}"
+EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
@@ -77,6 +81,14 @@ Global
{C3B585DE-1E5C-43D0-B9FE-EEA1B5673DDD}.Debug|Any CPU.Build.0 = Debug|Any CPU
{C3B585DE-1E5C-43D0-B9FE-EEA1B5673DDD}.Release|Any CPU.ActiveCfg = Release|Any CPU
{C3B585DE-1E5C-43D0-B9FE-EEA1B5673DDD}.Release|Any CPU.Build.0 = Release|Any CPU
+ {68921ADE-DF52-4157-BB05-3F9280DDA725}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {68921ADE-DF52-4157-BB05-3F9280DDA725}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {68921ADE-DF52-4157-BB05-3F9280DDA725}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {68921ADE-DF52-4157-BB05-3F9280DDA725}.Release|Any CPU.Build.0 = Release|Any CPU
+ {F63B71FA-BD02-482B-89D3-E35EAD88BF15}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {F63B71FA-BD02-482B-89D3-E35EAD88BF15}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {F63B71FA-BD02-482B-89D3-E35EAD88BF15}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {F63B71FA-BD02-482B-89D3-E35EAD88BF15}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
@@ -91,6 +103,8 @@ Global
{0A3BF334-1F90-4A14-B50F-D757956380C8} = {068FF229-56E5-4718-83EF-1D863CBE8F71}
{7C8AF72D-8645-4B5D-B1E5-FC3C405FEC46} = {068FF229-56E5-4718-83EF-1D863CBE8F71}
{C3B585DE-1E5C-43D0-B9FE-EEA1B5673DDD} = {FAA25495-423B-44E1-B49B-7DB6DB993664}
+ {68921ADE-DF52-4157-BB05-3F9280DDA725} = {068FF229-56E5-4718-83EF-1D863CBE8F71}
+ {F63B71FA-BD02-482B-89D3-E35EAD88BF15} = {AAAACF02-36A1-446B-83B5-B2FDE594C273}
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {E8FCAA60-A495-45A3-95C8-405142F3203A}