Артем Гавриленко 3 роки тому
батько
коміт
c4918d8ee6

+ 6 - 0
Kusach.sln

@@ -5,6 +5,8 @@ VisualStudioVersion = 16.0.31605.320
 MinimumVisualStudioVersion = 10.0.40219.1
 Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Kusach", "Kusach\Kusach.csproj", "{DC74454C-D8E7-43E9-B525-38E48BE898E7}"
 EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "UnitTests", "UnitTests\UnitTests.csproj", "{7C790DDB-873F-4D1D-AAEC-8EC90AA33AA5}"
+EndProject
 Global
 	GlobalSection(SolutionConfigurationPlatforms) = preSolution
 		Debug|Any CPU = Debug|Any CPU
@@ -15,6 +17,10 @@ Global
 		{DC74454C-D8E7-43E9-B525-38E48BE898E7}.Debug|Any CPU.Build.0 = Debug|Any CPU
 		{DC74454C-D8E7-43E9-B525-38E48BE898E7}.Release|Any CPU.ActiveCfg = Release|Any CPU
 		{DC74454C-D8E7-43E9-B525-38E48BE898E7}.Release|Any CPU.Build.0 = Release|Any CPU
+		{7C790DDB-873F-4D1D-AAEC-8EC90AA33AA5}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{7C790DDB-873F-4D1D-AAEC-8EC90AA33AA5}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{7C790DDB-873F-4D1D-AAEC-8EC90AA33AA5}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{7C790DDB-873F-4D1D-AAEC-8EC90AA33AA5}.Release|Any CPU.Build.0 = Release|Any CPU
 	EndGlobalSection
 	GlobalSection(SolutionProperties) = preSolution
 		HideSolutionNode = FALSE

+ 1 - 0
Kusach/Dispatcher.cs

@@ -28,6 +28,7 @@ namespace Kusach
         public string Patronymic { get; set; }
         public System.DateTime Birthday { get; set; }
         public string PhoneNumber { get; set; }
+        public string Email { get; set; }
     
         [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2227:CollectionPropertiesShouldBeReadOnly")]
         public virtual ICollection<RouteList> RouteList { get; set; }

+ 0 - 1
Kusach/EDM.Context.cs

@@ -32,7 +32,6 @@ namespace Kusach
         public virtual DbSet<PointsList> PointsList { get; set; }
         public virtual DbSet<RouteList> RouteList { get; set; }
         public virtual DbSet<Routes> Routes { get; set; }
-        public virtual DbSet<sysdiagrams> sysdiagrams { get; set; }
         public virtual DbSet<Transport> Transport { get; set; }
     }
 }

+ 5 - 36
Kusach/EDM.edmx

@@ -4,7 +4,7 @@
   <edmx:Runtime>
     <!-- SSDL content -->
     <edmx:StorageModels>
-      <Schema Namespace="Хранилище gr692_gavModel" Provider="System.Data.SqlClient" ProviderManifestToken="2012" Alias="Self" xmlns:store="http://schemas.microsoft.com/ado/2007/12/edm/EntityStoreSchemaGenerator" xmlns:customannotation="http://schemas.microsoft.com/ado/2013/11/edm/customannotation" xmlns="http://schemas.microsoft.com/ado/2009/11/edm/ssdl">
+    <Schema Namespace="Хранилище gr692_gavModel" Provider="System.Data.SqlClient" ProviderManifestToken="2012" Alias="Self" xmlns:store="http://schemas.microsoft.com/ado/2007/12/edm/EntityStoreSchemaGenerator" xmlns:customannotation="http://schemas.microsoft.com/ado/2013/11/edm/customannotation" xmlns="http://schemas.microsoft.com/ado/2009/11/edm/ssdl">
         <EntityType Name="Dispatcher">
           <Key>
             <PropertyRef Name="IdDispatcher" />
@@ -17,6 +17,7 @@
           <Property Name="Patronymic" Type="nvarchar" MaxLength="50" Nullable="false" />
           <Property Name="Birthday" Type="date" Nullable="false" />
           <Property Name="PhoneNumber" Type="nvarchar" MaxLength="10" Nullable="false" />
+          <Property Name="Email" Type="nvarchar" MaxLength="50" Nullable="false" />
         </EntityType>
         <EntityType Name="Drivers">
           <Key>
@@ -67,16 +68,6 @@
           <Property Name="IdRoute" Type="int" Nullable="false" />
           <Property Name="Name" Type="nvarchar" MaxLength="50" Nullable="false" />
         </EntityType>
-        <EntityType Name="sysdiagrams">
-          <Key>
-            <PropertyRef Name="diagram_id" />
-          </Key>
-          <Property Name="name" Type="nvarchar" MaxLength="128" Nullable="false" />
-          <Property Name="principal_id" Type="int" Nullable="false" />
-          <Property Name="diagram_id" Type="int" StoreGeneratedPattern="Identity" Nullable="false" />
-          <Property Name="version" Type="int" />
-          <Property Name="definition" Type="varbinary(max)" />
-        </EntityType>
         <EntityType Name="Transport">
           <Key>
             <PropertyRef Name="IdTransport" />
@@ -177,7 +168,6 @@
           <EntitySet Name="PointsList" EntityType="Self.PointsList" Schema="dbo" store:Type="Tables" />
           <EntitySet Name="RouteList" EntityType="Self.RouteList" Schema="dbo" store:Type="Tables" />
           <EntitySet Name="Routes" EntityType="Self.Routes" Schema="dbo" store:Type="Tables" />
-          <EntitySet Name="sysdiagrams" EntityType="Self.sysdiagrams" Schema="dbo" store:Type="Tables" />
           <EntitySet Name="Transport" EntityType="Self.Transport" Schema="dbo" store:Type="Tables" />
           <AssociationSet Name="FK__DriversLi__IdDri__0C85DE4D" Association="Self.FK__DriversLi__IdDri__0C85DE4D">
             <End Role="Drivers" EntitySet="Drivers" />
@@ -208,8 +198,7 @@
             <End Role="Drivers" EntitySet="Drivers" />
           </AssociationSet>
         </EntityContainer>
-      </Schema>
-    </edmx:StorageModels>
+      </Schema></edmx:StorageModels>
     <!-- CSDL content -->
     <edmx:ConceptualModels>
       <Schema Namespace="gr692_gavModel" Alias="Self" annotation:UseStrongSpatialTypes="false" xmlns:annotation="http://schemas.microsoft.com/ado/2009/02/edm/annotation" xmlns:customannotation="http://schemas.microsoft.com/ado/2013/11/edm/customannotation" xmlns="http://schemas.microsoft.com/ado/2009/11/edm">
@@ -226,6 +215,7 @@
           <Property Name="Birthday" Type="DateTime" Nullable="false" Precision="0" />
           <Property Name="PhoneNumber" Type="String" MaxLength="10" FixedLength="false" Unicode="true" Nullable="false" />
           <NavigationProperty Name="RouteList" Relationship="Self.FK__RouteList__IdRou__6383C8BA" FromRole="Dispatcher" ToRole="RouteList" />
+          <Property Name="Email" Type="String" Nullable="false" MaxLength="50" FixedLength="false" Unicode="true" />
         </EntityType>
         <EntityType Name="Drivers">
           <Key>
@@ -288,16 +278,6 @@
           <NavigationProperty Name="PointsList" Relationship="Self.FK__PointsLis__IdRou__66603565" FromRole="Routes" ToRole="PointsList" />
           <NavigationProperty Name="RouteList" Relationship="Self.FK__RouteList__IdRou__628FA481" FromRole="Routes" ToRole="RouteList" />
         </EntityType>
-        <EntityType Name="sysdiagrams">
-          <Key>
-            <PropertyRef Name="diagram_id" />
-          </Key>
-          <Property Name="name" Type="String" MaxLength="128" FixedLength="false" Unicode="true" Nullable="false" />
-          <Property Name="principal_id" Type="Int32" Nullable="false" />
-          <Property Name="diagram_id" Type="Int32" Nullable="false" annotation:StoreGeneratedPattern="Identity" />
-          <Property Name="version" Type="Int32" />
-          <Property Name="definition" Type="Binary" MaxLength="Max" FixedLength="false" />
-        </EntityType>
         <EntityType Name="Transport">
           <Key>
             <PropertyRef Name="IdTransport" />
@@ -399,7 +379,6 @@
           <EntitySet Name="PointsList" EntityType="Self.PointsList" />
           <EntitySet Name="RouteList" EntityType="Self.RouteList" />
           <EntitySet Name="Routes" EntityType="Self.Routes" />
-          <EntitySet Name="sysdiagrams" EntityType="Self.sysdiagrams" />
           <EntitySet Name="Transport" EntityType="Self.Transport" />
           <AssociationSet Name="FK__RouteList__IdRou__6383C8BA" Association="Self.FK__RouteList__IdRou__6383C8BA">
             <End Role="Dispatcher" EntitySet="Dispatcher" />
@@ -439,6 +418,7 @@
           <EntitySetMapping Name="Dispatcher">
             <EntityTypeMapping TypeName="gr692_gavModel.Dispatcher">
               <MappingFragment StoreEntitySet="Dispatcher">
+                <ScalarProperty Name="Email" ColumnName="Email" />
                 <ScalarProperty Name="IdDispatcher" ColumnName="IdDispatcher" />
                 <ScalarProperty Name="Login" ColumnName="Login" />
                 <ScalarProperty Name="Password" ColumnName="Password" />
@@ -505,17 +485,6 @@
               </MappingFragment>
             </EntityTypeMapping>
           </EntitySetMapping>
-          <EntitySetMapping Name="sysdiagrams">
-            <EntityTypeMapping TypeName="gr692_gavModel.sysdiagrams">
-              <MappingFragment StoreEntitySet="sysdiagrams">
-                <ScalarProperty Name="name" ColumnName="name" />
-                <ScalarProperty Name="principal_id" ColumnName="principal_id" />
-                <ScalarProperty Name="diagram_id" ColumnName="diagram_id" />
-                <ScalarProperty Name="version" ColumnName="version" />
-                <ScalarProperty Name="definition" ColumnName="definition" />
-              </MappingFragment>
-            </EntityTypeMapping>
-          </EntitySetMapping>
           <EntitySetMapping Name="Transport">
             <EntityTypeMapping TypeName="gr692_gavModel.Transport">
               <MappingFragment StoreEntitySet="Transport">

+ 9 - 10
Kusach/EDM.edmx.diagram

@@ -5,19 +5,18 @@
     <!-- Diagram content (shape and connector positions) -->
     <edmx:Diagrams>
       <Diagram DiagramId="b8240537cd7c460697af7edf661a78ae" Name="Diagram1">
-        <EntityTypeShape EntityType="gr692_gavModel.Dispatcher" Width="1.5" PointX="0.75" PointY="13.5" IsExpanded="true" />
-        <EntityTypeShape EntityType="gr692_gavModel.Drivers" Width="1.5" PointX="0.75" PointY="6.75" IsExpanded="true" />
-        <EntityTypeShape EntityType="gr692_gavModel.DriversList" Width="1.5" PointX="3" PointY="3.875" IsExpanded="true" />
-        <EntityTypeShape EntityType="gr692_gavModel.Points" Width="1.5" PointX="0.75" PointY="1" IsExpanded="true" />
-        <EntityTypeShape EntityType="gr692_gavModel.PointsList" Width="1.5" PointX="3" PointY="0.875" IsExpanded="true" />
-        <EntityTypeShape EntityType="gr692_gavModel.RouteList" Width="1.5" PointX="3" PointY="6.875" IsExpanded="true" />
-        <EntityTypeShape EntityType="gr692_gavModel.Routes" Width="1.5" PointX="0.75" PointY="3.875" IsExpanded="true" />
-        <EntityTypeShape EntityType="gr692_gavModel.sysdiagrams" Width="1.5" PointX="5.75" PointY="0.75" IsExpanded="true" />
-        <EntityTypeShape EntityType="gr692_gavModel.Transport" Width="1.5" PointX="1.5" PointY="10" IsExpanded="true" />
+        <EntityTypeShape EntityType="gr692_gavModel.Dispatcher" Width="1.5" PointX="6.375" PointY="3.375" IsExpanded="true" />
+        <EntityTypeShape EntityType="gr692_gavModel.Drivers" Width="1.5" PointX="0.75" PointY="6.5" IsExpanded="true" />
+        <EntityTypeShape EntityType="gr692_gavModel.DriversList" Width="1.5" PointX="0.5" PointY="3.875" IsExpanded="true" />
+        <EntityTypeShape EntityType="gr692_gavModel.Points" Width="1.5" PointX="6.625" PointY="0.875" IsExpanded="true" />
+        <EntityTypeShape EntityType="gr692_gavModel.PointsList" Width="1.5" PointX="3.875" PointY="0.875" IsExpanded="true" />
+        <EntityTypeShape EntityType="gr692_gavModel.RouteList" Width="1.5" PointX="3.625" PointY="3.875" IsExpanded="true" />
+        <EntityTypeShape EntityType="gr692_gavModel.Routes" Width="1.5" PointX="0.875" PointY="0.875" IsExpanded="true" />
+        <EntityTypeShape EntityType="gr692_gavModel.Transport" Width="1.5" PointX="3.625" PointY="6.5" IsExpanded="true" />
         <AssociationConnector Association="gr692_gavModel.FK__RouteList__IdRou__6383C8BA" ManuallyRouted="false" />
         <AssociationConnector Association="gr692_gavModel.FK__DriversLi__IdDri__0C85DE4D" ManuallyRouted="false" />
         <AssociationConnector Association="gr692_gavModel.FK_Drivers_Transport" ManuallyRouted="false" />
-        <AssociationConnector Association="gr692_gavModel.FK__DriversLi__IdRou__68487DD7" ManuallyRouted="false" />
+        <AssociationConnector Association="gr692_gavModel.FK__DriversLi__IdRou__68487DD7" ManuallyRouted="false" ></AssociationConnector>
         <AssociationConnector Association="gr692_gavModel.FK__PointsLis__IdPoi__6477ECF3" ManuallyRouted="false" />
         <AssociationConnector Association="gr692_gavModel.FK__PointsLis__IdRou__66603565" ManuallyRouted="false" />
         <AssociationConnector Association="gr692_gavModel.FK__RouteList__IdRou__628FA481" ManuallyRouted="false" />

+ 31 - 0
Kusach/Functions.cs

@@ -0,0 +1,31 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Text.RegularExpressions;
+using System.Threading.Tasks;
+
+namespace Kusach
+{
+    public class Functions
+    {
+        public static bool IsValidPhoneNumber(string phoneNumber)
+        {
+            foreach (char c in phoneNumber)
+                if (!char.IsDigit(c))
+                    return false;
+            return true;
+        }
+        public static bool IsValidEmail(string email)
+        {
+            if (Regex.IsMatch(email, @"^[\w-\.]+@([\w-]+\.)+[\w-]{2,4}$"))
+                return true;
+            else
+                return false;
+        }
+        public static string GetRouteName(int routeId)
+        {
+            return cnt.db.Routes.Where(item => item.IdRoute == routeId).Select(item => item.Name).FirstOrDefault();
+        }
+    }
+}

+ 1 - 3
Kusach/Kusach.csproj

@@ -67,6 +67,7 @@
       <Generator>MSBuild:Compile</Generator>
       <SubType>Designer</SubType>
     </ApplicationDefinition>
+    <Compile Include="Functions.cs" />
     <Compile Include="Pages\DispatcherListPage.xaml.cs">
       <DependentUpon>DispatcherListPage.xaml</DependentUpon>
     </Compile>
@@ -127,9 +128,6 @@
     <Compile Include="Routes.cs">
       <DependentUpon>EDM.tt</DependentUpon>
     </Compile>
-    <Compile Include="sysdiagrams.cs">
-      <DependentUpon>EDM.tt</DependentUpon>
-    </Compile>
     <Compile Include="Transport.cs">
       <DependentUpon>EDM.tt</DependentUpon>
     </Compile>

+ 19 - 4
Kusach/Windows/RegWindow.xaml

@@ -6,7 +6,7 @@
         xmlns:local="clr-namespace:Kusach"
         mc:Ignorable="d"
         ResizeMode="NoResize"
-        Title="Окно регистрации" Height="730" Width="600" WindowStartupLocation="CenterScreen">
+        Title="Окно регистрации" Height="803.5" Width="600" WindowStartupLocation="CenterScreen">
     <Grid>
         <Label 
             Content="Логин:" 
@@ -22,7 +22,8 @@
             TextWrapping="Wrap" 
             VerticalAlignment="Top" 
             Height="40" 
-            Width="240"/>
+            Width="240"
+            Text="{Binding Login}"/>
         <Label 
             Content="Пароль:" 
             HorizontalAlignment="Left" 
@@ -41,7 +42,7 @@
             x:Name="RegButton" 
             Content="Регистрация" 
             HorizontalAlignment="Left"
-            Margin="298,651,0,0" 
+            Margin="298,715,0,0" 
             VerticalAlignment="Top" 
             Height="40" 
             Width="150" 
@@ -50,7 +51,7 @@
             x:Name="BackButton" 
             Content="Назад" 
             HorizontalAlignment="Left" 
-            Margin="121,651,0,0" 
+            Margin="121,715,0,0" 
             VerticalAlignment="Top" 
             Height="40" 
             Width="150" 
@@ -126,5 +127,19 @@
             VerticalAlignment="Top" 
             Height="40" 
             Width="240"/>
+        <Label 
+            Content="Email:" 
+            HorizontalAlignment="Left" 
+            Margin="143,596,0,0"
+            VerticalAlignment="Top" 
+            Height="40" 
+            Width="240"/>
+        <TextBox 
+            x:Name="EmailBox" 
+            HorizontalAlignment="Left" 
+            Margin="142,636,0,0" 
+            VerticalAlignment="Top" 
+            Height="40" 
+            Width="240"/>
     </Grid>
 </Window>

+ 8 - 3
Kusach/Windows/RegWindow.xaml.cs

@@ -24,6 +24,10 @@ namespace Kusach
                     MessageBox.Show("Данный логин уже занят");
                 else
                 {
+                    if (!Functions.IsValidPhoneNumber(PhoneBox.Text))
+                        MessageBox.Show("Номер телефона введен неверно.");
+                    if (!Functions.IsValidEmail(EmailBox.Text))
+                        MessageBox.Show("email введен неверно.");
                     Dispatcher newUser = new Dispatcher()
                     {
                         IdDispatcher = cnt.db.Dispatcher.Select(p => p.IdDispatcher).DefaultIfEmpty(0).Max() + 1,
@@ -33,7 +37,8 @@ namespace Kusach
                         Name = LNameBox.Text,
                         Patronymic = MNameBox.Text,
                         Birthday = Convert.ToDateTime(BirthdayBox.Text),
-                        PhoneNumber = PhoneBox.Text
+                        PhoneNumber = PhoneBox.Text,
+                        Email = EmailBox.Text
                     };
                     cnt.db.Dispatcher.Add(newUser);
                     cnt.db.SaveChanges();
@@ -43,9 +48,9 @@ namespace Kusach
                     this.Close();
                 }
             }
-            catch (Exception ex)
+            catch
             {
-                MessageBox.Show($"Произошла ошибка. : {ex}");
+                MessageBox.Show($"Произошла ошибка.");
             }
         }
 

+ 1 - 1
Kusach/Windows/RouteEditWindow.xaml.cs

@@ -14,7 +14,7 @@ namespace Kusach.Windows
         {
             InitializeComponent();
             routeId = id;
-            RouteNameBox.Text = cnt.db.Routes.Where(item => item.IdRoute == routeId).Select(item => item.Name).FirstOrDefault();
+            RouteNameBox.Text = Functions.GetRouteName(routeId);
             Update();
         }
         private void PointsDataGridRow_MouseDoubleClick(object sender, MouseButtonEventArgs e)

+ 0 - 23
Kusach/sysdiagrams.cs

@@ -1,23 +0,0 @@
-//------------------------------------------------------------------------------
-// <auto-generated>
-//     Этот код создан по шаблону.
-//
-//     Изменения, вносимые в этот файл вручную, могут привести к непредвиденной работе приложения.
-//     Изменения, вносимые в этот файл вручную, будут перезаписаны при повторном создании кода.
-// </auto-generated>
-//------------------------------------------------------------------------------
-
-namespace Kusach
-{
-    using System;
-    using System.Collections.Generic;
-    
-    public partial class sysdiagrams
-    {
-        public string name { get; set; }
-        public int principal_id { get; set; }
-        public int diagram_id { get; set; }
-        public Nullable<int> version { get; set; }
-        public byte[] definition { get; set; }
-    }
-}

+ 20 - 0
UnitTests/Properties/AssemblyInfo.cs

@@ -0,0 +1,20 @@
+using System.Reflection;
+using System.Runtime.CompilerServices;
+using System.Runtime.InteropServices;
+
+[assembly: AssemblyTitle("UnitTests")]
+[assembly: AssemblyDescription("")]
+[assembly: AssemblyConfiguration("")]
+[assembly: AssemblyCompany("")]
+[assembly: AssemblyProduct("UnitTests")]
+[assembly: AssemblyCopyright("Copyright ©  2022")]
+[assembly: AssemblyTrademark("")]
+[assembly: AssemblyCulture("")]
+
+[assembly: ComVisible(false)]
+
+[assembly: Guid("7c790ddb-873f-4d1d-aaec-8ec90aa33aa5")]
+
+// [assembly: AssemblyVersion("1.0.*")]
+[assembly: AssemblyVersion("1.0.0.0")]
+[assembly: AssemblyFileVersion("1.0.0.0")]

+ 29 - 0
UnitTests/UnitTest1.cs

@@ -0,0 +1,29 @@
+using Microsoft.VisualStudio.TestTools.UnitTesting;
+using System;
+using Kusach;
+namespace UnitTests
+{
+    [TestClass]
+    public class UnitTest1
+    {
+        [TestMethod]
+        public void IsValidPhoneNumber()
+        {
+            string phoneNum = "9996194949";
+            Assert.IsTrue(Functions.IsValidPhoneNumber(phoneNum));
+        }
+        [TestMethod]
+        public void IsValidEmail()
+        {
+            string email = "lalka@gmail.com";
+            Assert.IsTrue(Functions.IsValidEmail(email));
+        }
+        [TestMethod]
+        public void GetRouteName()
+        {
+            int routeId = 1;
+            string expected = "Маршрут #1";
+            Assert.AreEqual(Functions.GetRouteName(routeId),expected);
+        }
+    }
+}

+ 74 - 0
UnitTests/UnitTests.csproj

@@ -0,0 +1,74 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="15.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <Import Project="..\packages\MSTest.TestAdapter.2.1.2\build\net45\MSTest.TestAdapter.props" Condition="Exists('..\packages\MSTest.TestAdapter.2.1.2\build\net45\MSTest.TestAdapter.props')" />
+  <Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
+  <PropertyGroup>
+    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+    <ProjectGuid>{7C790DDB-873F-4D1D-AAEC-8EC90AA33AA5}</ProjectGuid>
+    <OutputType>Library</OutputType>
+    <AppDesignerFolder>Properties</AppDesignerFolder>
+    <RootNamespace>UnitTests</RootNamespace>
+    <AssemblyName>UnitTests</AssemblyName>
+    <TargetFrameworkVersion>v4.7.2</TargetFrameworkVersion>
+    <FileAlignment>512</FileAlignment>
+    <ProjectTypeGuids>{3AC096D0-A1C2-E12C-1390-A8335801FDAB};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
+    <VisualStudioVersion Condition="'$(VisualStudioVersion)' == ''">15.0</VisualStudioVersion>
+    <VSToolsPath Condition="'$(VSToolsPath)' == ''">$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)</VSToolsPath>
+    <ReferencePath>$(ProgramFiles)\Common Files\microsoft shared\VSTT\$(VisualStudioVersion)\UITestExtensionPackages</ReferencePath>
+    <IsCodedUITest>False</IsCodedUITest>
+    <TestProjectType>UnitTest</TestProjectType>
+    <NuGetPackageImportStamp>
+    </NuGetPackageImportStamp>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+    <DebugSymbols>true</DebugSymbols>
+    <DebugType>full</DebugType>
+    <Optimize>false</Optimize>
+    <OutputPath>bin\Debug\</OutputPath>
+    <DefineConstants>DEBUG;TRACE</DefineConstants>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+    <DebugType>pdbonly</DebugType>
+    <Optimize>true</Optimize>
+    <OutputPath>bin\Release\</OutputPath>
+    <DefineConstants>TRACE</DefineConstants>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+  </PropertyGroup>
+  <ItemGroup>
+    <Reference Include="Microsoft.VisualStudio.TestPlatform.TestFramework, Version=14.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
+      <HintPath>..\packages\MSTest.TestFramework.2.1.2\lib\net45\Microsoft.VisualStudio.TestPlatform.TestFramework.dll</HintPath>
+    </Reference>
+    <Reference Include="Microsoft.VisualStudio.TestPlatform.TestFramework.Extensions, Version=14.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
+      <HintPath>..\packages\MSTest.TestFramework.2.1.2\lib\net45\Microsoft.VisualStudio.TestPlatform.TestFramework.Extensions.dll</HintPath>
+    </Reference>
+    <Reference Include="System" />
+    <Reference Include="System.Core" />
+  </ItemGroup>
+  <ItemGroup>
+    <Compile Include="UnitTest1.cs" />
+    <Compile Include="Properties\AssemblyInfo.cs" />
+  </ItemGroup>
+  <ItemGroup>
+    <None Include="packages.config" />
+  </ItemGroup>
+  <ItemGroup>
+    <ProjectReference Include="..\Kusach\Kusach.csproj">
+      <Project>{dc74454c-d8e7-43e9-b525-38e48be898e7}</Project>
+      <Name>Kusach</Name>
+    </ProjectReference>
+  </ItemGroup>
+  <Import Project="$(VSToolsPath)\TeamTest\Microsoft.TestTools.targets" Condition="Exists('$(VSToolsPath)\TeamTest\Microsoft.TestTools.targets')" />
+  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
+  <Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
+    <PropertyGroup>
+      <ErrorText>Данный проект ссылается на пакеты NuGet, отсутствующие на этом компьютере. Используйте восстановление пакетов NuGet, чтобы скачать их.  Дополнительную информацию см. по адресу: http://go.microsoft.com/fwlink/?LinkID=322105. Отсутствует следующий файл: {0}.</ErrorText>
+    </PropertyGroup>
+    <Error Condition="!Exists('..\packages\MSTest.TestAdapter.2.1.2\build\net45\MSTest.TestAdapter.props')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\MSTest.TestAdapter.2.1.2\build\net45\MSTest.TestAdapter.props'))" />
+    <Error Condition="!Exists('..\packages\MSTest.TestAdapter.2.1.2\build\net45\MSTest.TestAdapter.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\MSTest.TestAdapter.2.1.2\build\net45\MSTest.TestAdapter.targets'))" />
+  </Target>
+  <Import Project="..\packages\MSTest.TestAdapter.2.1.2\build\net45\MSTest.TestAdapter.targets" Condition="Exists('..\packages\MSTest.TestAdapter.2.1.2\build\net45\MSTest.TestAdapter.targets')" />
+</Project>

+ 5 - 0
UnitTests/packages.config

@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8"?>
+<packages>
+  <package id="MSTest.TestAdapter" version="2.1.2" targetFramework="net472" />
+  <package id="MSTest.TestFramework" version="2.1.2" targetFramework="net472" />
+</packages>