Started work on Item Filter Preview module
This commit is contained in:
		
							parent
							
								
									2f2a57e77a
								
							
						
					
					
						commit
						014107c76b
					
				| @ -0,0 +1,87 @@ | |||||||
|  | <?xml version="1.0" encoding="utf-8"?> | ||||||
|  | <Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> | ||||||
|  |   <PropertyGroup> | ||||||
|  |     <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration> | ||||||
|  |     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform> | ||||||
|  |     <ProductVersion> | ||||||
|  |     </ProductVersion> | ||||||
|  |     <SchemaVersion>2.0</SchemaVersion> | ||||||
|  |     <ProjectGuid>{58CD3B9C-EBBA-4527-A81C-78B7EA9CA298}</ProjectGuid> | ||||||
|  |     <OutputType>Library</OutputType> | ||||||
|  |     <AppDesignerFolder>Properties</AppDesignerFolder> | ||||||
|  |     <RootNamespace>Filtration.ItemFilterPreview.Tests</RootNamespace> | ||||||
|  |     <AssemblyName>Filtration.ItemFilterPreview.Tests</AssemblyName> | ||||||
|  |     <TargetFrameworkVersion>v4.6.1</TargetFrameworkVersion> | ||||||
|  |     <TargetPlatformVersion>8.1</TargetPlatformVersion> | ||||||
|  |     <MinimumVisualStudioVersion>12</MinimumVisualStudioVersion> | ||||||
|  |     <FileAlignment>512</FileAlignment> | ||||||
|  |     <ProjectTypeGuids>{3AC096D0-A1C2-E12C-1390-A8335801FDAB};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids> | ||||||
|  |     <VisualStudioVersion Condition="'$(VisualStudioVersion)' == ''">10.0</VisualStudioVersion> | ||||||
|  |     <VSToolsPath Condition="'$(VSToolsPath)' == ''">$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)</VSToolsPath> | ||||||
|  |     <ReferencePath>$(ProgramFiles)\Common Files\microsoft shared\VSTT\$(VisualStudioVersion)\UITestExtensionPackages</ReferencePath> | ||||||
|  |     <IsCodedUITest>True</IsCodedUITest> | ||||||
|  |     <TestProjectType>CodedUITest</TestProjectType> | ||||||
|  |     <IsWindowsStoreCodedUITest>True</IsWindowsStoreCodedUITest> | ||||||
|  |     <TargetFrameworkProfile /> | ||||||
|  |   </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="Moq, Version=4.2.1510.2205, Culture=neutral, PublicKeyToken=69f491c39445e920, processorArchitecture=MSIL"> | ||||||
|  |       <HintPath>..\packages\Moq.4.2.1510.2205\lib\net40\Moq.dll</HintPath> | ||||||
|  |       <Private>True</Private> | ||||||
|  |     </Reference> | ||||||
|  |     <Reference Include="nunit.framework, Version=3.0.5813.39031, Culture=neutral, PublicKeyToken=2638cd05610744eb, processorArchitecture=MSIL"> | ||||||
|  |       <HintPath>..\packages\NUnit.3.0.1\lib\net45\nunit.framework.dll</HintPath> | ||||||
|  |       <Private>True</Private> | ||||||
|  |     </Reference> | ||||||
|  |     <Reference Include="System" /> | ||||||
|  |   </ItemGroup> | ||||||
|  |   <ItemGroup> | ||||||
|  |     <CodeAnalysisDependentAssemblyPaths Condition=" '$(VS100COMNTOOLS)' != '' " Include="$(VS100COMNTOOLS)..\IDE\PrivateAssemblies"> | ||||||
|  |       <Visible>False</Visible> | ||||||
|  |     </CodeAnalysisDependentAssemblyPaths> | ||||||
|  |   </ItemGroup> | ||||||
|  |   <ItemGroup> | ||||||
|  |     <Compile Include="Properties\AssemblyInfo.cs" /> | ||||||
|  |     <Compile Include="Services\TestItemBlockItemMatcher.cs" /> | ||||||
|  |     <Compile Include="Services\TestItemFilterProcessor.cs" /> | ||||||
|  |   </ItemGroup> | ||||||
|  |   <ItemGroup> | ||||||
|  |     <None Include="packages.config" /> | ||||||
|  |   </ItemGroup> | ||||||
|  |   <ItemGroup> | ||||||
|  |     <ProjectReference Include="..\Filtration.ItemFilterPreview\Filtration.ItemFilterPreview.csproj"> | ||||||
|  |       <Project>{3ab98b6e-05db-44fa-9dad-584aa88f0739}</Project> | ||||||
|  |       <Name>Filtration.ItemFilterPreview</Name> | ||||||
|  |     </ProjectReference> | ||||||
|  |     <ProjectReference Include="..\Filtration.ObjectModel\Filtration.ObjectModel.csproj"> | ||||||
|  |       <Project>{4aac3beb-1dc1-483e-9d11-0e9334e80227}</Project> | ||||||
|  |       <Name>Filtration.ObjectModel</Name> | ||||||
|  |     </ProjectReference> | ||||||
|  |   </ItemGroup> | ||||||
|  |   <Import Project="$(VSToolsPath)\TeamTest\Microsoft.TestTools.targets" Condition="Exists('$(VSToolsPath)\TeamTest\Microsoft.TestTools.targets')" /> | ||||||
|  |   <Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" /> | ||||||
|  |   <!-- To modify your build process, add your task inside one of the targets below and uncomment it.  | ||||||
|  |        Other similar extension points exist, see Microsoft.Common.targets. | ||||||
|  |   <Target Name="BeforeBuild"> | ||||||
|  |   </Target> | ||||||
|  |   <Target Name="AfterBuild"> | ||||||
|  |   </Target> | ||||||
|  |   --> | ||||||
|  | </Project> | ||||||
| @ -0,0 +1,35 @@ | |||||||
|  | using System.Reflection; | ||||||
|  | using System.Runtime.CompilerServices; | ||||||
|  | using System.Runtime.InteropServices; | ||||||
|  | 
 | ||||||
|  | // General Information about an assembly is controlled through the following  | ||||||
|  | // set of attributes. Change these attribute values to modify the information | ||||||
|  | // associated with an assembly. | ||||||
|  | [assembly: AssemblyTitle("Filtration.ItemFilterPreview.Tests")] | ||||||
|  | [assembly: AssemblyDescription("")] | ||||||
|  | [assembly: AssemblyConfiguration("")] | ||||||
|  | [assembly: AssemblyCompany("")] | ||||||
|  | [assembly: AssemblyProduct("Filtration.ItemFilterPreview.Tests")] | ||||||
|  | [assembly: AssemblyCopyright("Copyright ©  2015")] | ||||||
|  | [assembly: AssemblyTrademark("")] | ||||||
|  | [assembly: AssemblyCulture("")] | ||||||
|  | 
 | ||||||
|  | // Setting ComVisible to false makes the types in this assembly not visible  | ||||||
|  | // to COM components.  If you need to access a type in this assembly from  | ||||||
|  | // COM, set the ComVisible attribute to true on that type. | ||||||
|  | [assembly: ComVisible(false)] | ||||||
|  | 
 | ||||||
|  | // The following GUID is for the ID of the typelib if this project is exposed to COM | ||||||
|  | [assembly: Guid("58cd3b9c-ebba-4527-a81c-78b7ea9ca298")] | ||||||
|  | 
 | ||||||
|  | // Version information for an assembly consists of the following four values: | ||||||
|  | // | ||||||
|  | //      Major Version | ||||||
|  | //      Minor Version  | ||||||
|  | //      Build Number | ||||||
|  | //      Revision | ||||||
|  | // | ||||||
|  | // You can specify all the values or you can default the Build and Revision Numbers  | ||||||
|  | // by using the '*' as shown below: | ||||||
|  | [assembly: AssemblyVersion("1.0.0.0")] | ||||||
|  | [assembly: AssemblyFileVersion("1.0.0.0")] | ||||||
| @ -0,0 +1,127 @@ | |||||||
|  | using System; | ||||||
|  | using System.Collections.Generic; | ||||||
|  | using System.Collections.ObjectModel; | ||||||
|  | using System.Linq; | ||||||
|  | using System.Reflection; | ||||||
|  | using System.Text; | ||||||
|  | using System.Threading.Tasks; | ||||||
|  | using Filtration.ItemFilterPreview.Model; | ||||||
|  | using Filtration.ItemFilterPreview.Services; | ||||||
|  | using Filtration.ObjectModel.BlockItemTypes; | ||||||
|  | using Filtration.ObjectModel.Enums; | ||||||
|  | using Moq; | ||||||
|  | using NUnit.Framework; | ||||||
|  | 
 | ||||||
|  | namespace Filtration.ItemFilterPreview.Tests.Services | ||||||
|  | { | ||||||
|  |     [TestFixture] | ||||||
|  |     public class TestItemBlockItemMatcher | ||||||
|  |     { | ||||||
|  |         private ItemBlockItemMatcherTestUtility _testUtility; | ||||||
|  | 
 | ||||||
|  |         [SetUp] | ||||||
|  |         public void ItemBlockItemMatcherTestSetUp() | ||||||
|  |         { | ||||||
|  |             _testUtility = new ItemBlockItemMatcherTestUtility(); | ||||||
|  |         } | ||||||
|  | 
 | ||||||
|  |         [TestCase("Test Base Type", true)] | ||||||
|  |         [TestCase("Test Bas", true)] | ||||||
|  |         [TestCase("T", true)] | ||||||
|  |         [TestCase("Base Type", false)] | ||||||
|  |         public void BaseTypeBlockItemMatch_SingleBlockItemValue_ReturnsTrue(string testInputBaseType, bool expectedResult) | ||||||
|  |         { | ||||||
|  |             //Arrange | ||||||
|  |             var testInputItem = Mock.Of<IItem>(i => i.BaseType == "Test Base Type"); | ||||||
|  |             var testInputBaseTypeBlockItem = new BaseTypeBlockItem(); | ||||||
|  |             testInputBaseTypeBlockItem.Items.Add(testInputBaseType); | ||||||
|  | 
 | ||||||
|  |             //Act | ||||||
|  |             var result = _testUtility.ItemBlockItemMatcher.BaseTypeBlockItemMatch(testInputBaseTypeBlockItem, testInputItem); | ||||||
|  | 
 | ||||||
|  |             //Assert | ||||||
|  |             Assert.AreEqual(expectedResult, result); | ||||||
|  |         } | ||||||
|  | 
 | ||||||
|  |         [TestCase("Test Base Type", true)] | ||||||
|  |         [TestCase("Test Bas", true)] | ||||||
|  |         [TestCase("T", true)] | ||||||
|  |         [TestCase("Base Type", false)] | ||||||
|  |         public void BaseTypeBlockItemMatch_MultipleBlockItemValues_ReturnsCorrectResult(string testInputBaseType, bool expectedResult) | ||||||
|  |         { | ||||||
|  |             //Arrange | ||||||
|  |             var testInputItem = Mock.Of<IItem>(i => i.BaseType == "Test Base Type"); | ||||||
|  |             var testInputBlockItem = new BaseTypeBlockItem(); | ||||||
|  |             testInputBlockItem.Items.Add("Something else"); | ||||||
|  |             testInputBlockItem.Items.Add(testInputBaseType); | ||||||
|  |             testInputBlockItem.Items.Add("Blah"); | ||||||
|  | 
 | ||||||
|  |             //Act | ||||||
|  |             var result = _testUtility.ItemBlockItemMatcher.BaseTypeBlockItemMatch(testInputBlockItem, testInputItem); | ||||||
|  | 
 | ||||||
|  |             //Assert | ||||||
|  |             Assert.AreEqual(expectedResult, result); | ||||||
|  |         } | ||||||
|  | 
 | ||||||
|  |         [TestCase("Test Item Class", true)] | ||||||
|  |         [TestCase("Test It", true)] | ||||||
|  |         [TestCase("T", true)] | ||||||
|  |         [TestCase("Item Class", false)] | ||||||
|  |         public void ItemClassBlockItemMatch_SingleBlockItemValue_ReturnsCorrectResult(string testInputBlockItemItemClass, bool expectedResult) | ||||||
|  |         { | ||||||
|  |             //Arrange | ||||||
|  |             var testInputItem = Mock.Of<IItem>(i => i.ItemClass == "Test Item Class"); | ||||||
|  |             var testInputBlockItem = new ClassBlockItem(); | ||||||
|  |             testInputBlockItem.Items.Add(testInputBlockItemItemClass); | ||||||
|  | 
 | ||||||
|  |             //Act | ||||||
|  |             var result = _testUtility.ItemBlockItemMatcher.ClassBlockItemMatch(testInputBlockItem, testInputItem); | ||||||
|  | 
 | ||||||
|  |             //Assert | ||||||
|  |             Assert.AreEqual(expectedResult, result); | ||||||
|  |         } | ||||||
|  | 
 | ||||||
|  |         [TestCase(FilterPredicateOperator.Equal, 49, false)] | ||||||
|  |         [TestCase(FilterPredicateOperator.Equal, 50, true)] | ||||||
|  |         [TestCase(FilterPredicateOperator.Equal, 51, false)] | ||||||
|  |         [TestCase(FilterPredicateOperator.GreaterThan, 49, true)] | ||||||
|  |         [TestCase(FilterPredicateOperator.GreaterThan, 50, false)] | ||||||
|  |         [TestCase(FilterPredicateOperator.GreaterThan, 51, false)] | ||||||
|  |         [TestCase(FilterPredicateOperator.GreaterThanOrEqual, 49, true)] | ||||||
|  |         [TestCase(FilterPredicateOperator.GreaterThanOrEqual, 50, true)] | ||||||
|  |         [TestCase(FilterPredicateOperator.GreaterThanOrEqual, 51, false)] | ||||||
|  |         [TestCase(FilterPredicateOperator.LessThan, 49, false)] | ||||||
|  |         [TestCase(FilterPredicateOperator.LessThan, 50, false)] | ||||||
|  |         [TestCase(FilterPredicateOperator.LessThan, 51, true)] | ||||||
|  |         [TestCase(FilterPredicateOperator.LessThanOrEqual, 49, false)] | ||||||
|  |         [TestCase(FilterPredicateOperator.LessThanOrEqual, 50, true)] | ||||||
|  |         [TestCase(FilterPredicateOperator.LessThanOrEqual, 51, true)] | ||||||
|  |         [TestCase(-1, 51, false)] | ||||||
|  |         public void DropLevelBlockItemMatch_ReturnsCorrectResult(FilterPredicateOperator testInputFilterPredicateOperator, int testInputBlockItemDropLevel, bool expectedResult) | ||||||
|  |         { | ||||||
|  |             //Arrange | ||||||
|  |             var testInputItem = Mock.Of<IItem>(i => i.DropLevel == 50); | ||||||
|  |             var testInputBlockItem = new DropLevelBlockItem(testInputFilterPredicateOperator, testInputBlockItemDropLevel); | ||||||
|  | 
 | ||||||
|  |             //Act | ||||||
|  |             var result = _testUtility.ItemBlockItemMatcher.DropLevelBlockItemMatch(testInputBlockItem, testInputItem); | ||||||
|  |              | ||||||
|  |             //Assert | ||||||
|  |             Assert.AreEqual(expectedResult, result); | ||||||
|  |         } | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  |         private class ItemBlockItemMatcherTestUtility | ||||||
|  |         { | ||||||
|  |             public ItemBlockItemMatcherTestUtility() | ||||||
|  |             { | ||||||
|  |                 // Mock setups | ||||||
|  | 
 | ||||||
|  |                 // Class under-test instantiation | ||||||
|  |                 ItemBlockItemMatcher = new ItemBlockItemMatcher(); | ||||||
|  |             } | ||||||
|  | 
 | ||||||
|  |             public ItemBlockItemMatcher ItemBlockItemMatcher { get; private set; } | ||||||
|  |         } | ||||||
|  |     } | ||||||
|  | } | ||||||
| @ -0,0 +1,10 @@ | |||||||
|  | using NUnit.Framework; | ||||||
|  | 
 | ||||||
|  | namespace Filtration.ItemFilterPreview.Tests.Services | ||||||
|  | { | ||||||
|  |     [TestFixture] | ||||||
|  |     public class TestItemFilterProcessor | ||||||
|  |     { | ||||||
|  | 
 | ||||||
|  |     } | ||||||
|  | } | ||||||
							
								
								
									
										5
									
								
								Filtration.ItemFilterPreview.Tests/packages.config
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										5
									
								
								Filtration.ItemFilterPreview.Tests/packages.config
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,5 @@ | |||||||
|  | <?xml version="1.0" encoding="utf-8"?> | ||||||
|  | <packages> | ||||||
|  |   <package id="Moq" version="4.2.1510.2205" targetFramework="net46" /> | ||||||
|  |   <package id="NUnit" version="3.0.1" targetFramework="net46" /> | ||||||
|  | </packages> | ||||||
							
								
								
									
										6
									
								
								Filtration.ItemFilterPreview/App.config
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										6
									
								
								Filtration.ItemFilterPreview/App.config
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,6 @@ | |||||||
|  | <?xml version="1.0" encoding="utf-8"?> | ||||||
|  | <configuration> | ||||||
|  |     <startup>  | ||||||
|  |         <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.6.1"/> | ||||||
|  |     </startup> | ||||||
|  | </configuration> | ||||||
							
								
								
									
										9
									
								
								Filtration.ItemFilterPreview/App.xaml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										9
									
								
								Filtration.ItemFilterPreview/App.xaml
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,9 @@ | |||||||
|  | <Application x:Class="Filtration.ItemFilterPreview.App" | ||||||
|  |              xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" | ||||||
|  |              xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" | ||||||
|  |              xmlns:local="clr-namespace:Filtration.ItemFilterPreview" | ||||||
|  |              StartupUri="MainWindow.xaml"> | ||||||
|  |     <Application.Resources> | ||||||
|  |           | ||||||
|  |     </Application.Resources> | ||||||
|  | </Application> | ||||||
							
								
								
									
										17
									
								
								Filtration.ItemFilterPreview/App.xaml.cs
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										17
									
								
								Filtration.ItemFilterPreview/App.xaml.cs
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,17 @@ | |||||||
|  | using System; | ||||||
|  | using System.Collections.Generic; | ||||||
|  | using System.Configuration; | ||||||
|  | using System.Data; | ||||||
|  | using System.Linq; | ||||||
|  | using System.Threading.Tasks; | ||||||
|  | using System.Windows; | ||||||
|  | 
 | ||||||
|  | namespace Filtration.ItemFilterPreview | ||||||
|  | { | ||||||
|  |     /// <summary> | ||||||
|  |     /// Interaction logic for App.xaml | ||||||
|  |     /// </summary> | ||||||
|  |     public partial class App : Application | ||||||
|  |     { | ||||||
|  |     } | ||||||
|  | } | ||||||
							
								
								
									
										127
									
								
								Filtration.ItemFilterPreview/Filtration.ItemFilterPreview.csproj
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										127
									
								
								Filtration.ItemFilterPreview/Filtration.ItemFilterPreview.csproj
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,127 @@ | |||||||
|  | <?xml version="1.0" encoding="utf-8"?> | ||||||
|  | <Project ToolsVersion="14.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> | ||||||
|  |   <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>{3AB98B6E-05DB-44FA-9DAD-584AA88F0739}</ProjectGuid> | ||||||
|  |     <OutputType>WinExe</OutputType> | ||||||
|  |     <AppDesignerFolder>Properties</AppDesignerFolder> | ||||||
|  |     <RootNamespace>Filtration.ItemFilterPreview</RootNamespace> | ||||||
|  |     <AssemblyName>Filtration.ItemFilterPreview</AssemblyName> | ||||||
|  |     <TargetFrameworkVersion>v4.6.1</TargetFrameworkVersion> | ||||||
|  |     <FileAlignment>512</FileAlignment> | ||||||
|  |     <ProjectTypeGuids>{60dc8134-eba5-43b8-bcc9-bb4bc16c2548};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids> | ||||||
|  |     <WarningLevel>4</WarningLevel> | ||||||
|  |     <AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects> | ||||||
|  |     <TargetFrameworkProfile /> | ||||||
|  |   </PropertyGroup> | ||||||
|  |   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' "> | ||||||
|  |     <PlatformTarget>AnyCPU</PlatformTarget> | ||||||
|  |     <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' "> | ||||||
|  |     <PlatformTarget>AnyCPU</PlatformTarget> | ||||||
|  |     <DebugType>pdbonly</DebugType> | ||||||
|  |     <Optimize>true</Optimize> | ||||||
|  |     <OutputPath>bin\Release\</OutputPath> | ||||||
|  |     <DefineConstants>TRACE</DefineConstants> | ||||||
|  |     <ErrorReport>prompt</ErrorReport> | ||||||
|  |     <WarningLevel>4</WarningLevel> | ||||||
|  |   </PropertyGroup> | ||||||
|  |   <ItemGroup> | ||||||
|  |     <Reference Include="System" /> | ||||||
|  |     <Reference Include="System.Data" /> | ||||||
|  |     <Reference Include="System.Xml" /> | ||||||
|  |     <Reference Include="Microsoft.CSharp" /> | ||||||
|  |     <Reference Include="System.Core" /> | ||||||
|  |     <Reference Include="System.Xml.Linq" /> | ||||||
|  |     <Reference Include="System.Data.DataSetExtensions" /> | ||||||
|  |     <Reference Include="System.Net.Http" /> | ||||||
|  |     <Reference Include="System.Xaml"> | ||||||
|  |       <RequiredTargetFramework>4.0</RequiredTargetFramework> | ||||||
|  |     </Reference> | ||||||
|  |     <Reference Include="WindowsBase" /> | ||||||
|  |     <Reference Include="PresentationCore" /> | ||||||
|  |     <Reference Include="PresentationFramework" /> | ||||||
|  |   </ItemGroup> | ||||||
|  |   <ItemGroup> | ||||||
|  |     <ApplicationDefinition Include="App.xaml"> | ||||||
|  |       <Generator>MSBuild:Compile</Generator> | ||||||
|  |       <SubType>Designer</SubType> | ||||||
|  |     </ApplicationDefinition> | ||||||
|  |     <Compile Include="Model\Item.cs" /> | ||||||
|  |     <Compile Include="Model\ItemCollection.cs" /> | ||||||
|  |     <Compile Include="Model\Socket.cs" /> | ||||||
|  |     <Compile Include="Model\SocketGroup.cs" /> | ||||||
|  |     <Compile Include="Services\ItemBlockItemMatcher.cs" /> | ||||||
|  |     <Compile Include="Services\ItemFilterProcessor.cs" /> | ||||||
|  |     <Compile Include="UserControls\ItemSocketsControl.xaml.cs"> | ||||||
|  |       <DependentUpon>ItemSocketsControl.xaml</DependentUpon> | ||||||
|  |     </Compile> | ||||||
|  |     <Page Include="MainWindow.xaml"> | ||||||
|  |       <Generator>MSBuild:Compile</Generator> | ||||||
|  |       <SubType>Designer</SubType> | ||||||
|  |     </Page> | ||||||
|  |     <Compile Include="App.xaml.cs"> | ||||||
|  |       <DependentUpon>App.xaml</DependentUpon> | ||||||
|  |       <SubType>Code</SubType> | ||||||
|  |     </Compile> | ||||||
|  |     <Compile Include="MainWindow.xaml.cs"> | ||||||
|  |       <DependentUpon>MainWindow.xaml</DependentUpon> | ||||||
|  |       <SubType>Code</SubType> | ||||||
|  |     </Compile> | ||||||
|  |     <Page Include="UserControls\ItemSocketsControl.xaml"> | ||||||
|  |       <SubType>Designer</SubType> | ||||||
|  |       <Generator>MSBuild:Compile</Generator> | ||||||
|  |     </Page> | ||||||
|  |   </ItemGroup> | ||||||
|  |   <ItemGroup> | ||||||
|  |     <Compile Include="Properties\AssemblyInfo.cs"> | ||||||
|  |       <SubType>Code</SubType> | ||||||
|  |     </Compile> | ||||||
|  |     <Compile Include="Properties\Resources.Designer.cs"> | ||||||
|  |       <AutoGen>True</AutoGen> | ||||||
|  |       <DesignTime>True</DesignTime> | ||||||
|  |       <DependentUpon>Resources.resx</DependentUpon> | ||||||
|  |     </Compile> | ||||||
|  |     <Compile Include="Properties\Settings.Designer.cs"> | ||||||
|  |       <AutoGen>True</AutoGen> | ||||||
|  |       <DependentUpon>Settings.settings</DependentUpon> | ||||||
|  |       <DesignTimeSharedInput>True</DesignTimeSharedInput> | ||||||
|  |     </Compile> | ||||||
|  |     <EmbeddedResource Include="Properties\Resources.resx"> | ||||||
|  |       <Generator>ResXFileCodeGenerator</Generator> | ||||||
|  |       <LastGenOutput>Resources.Designer.cs</LastGenOutput> | ||||||
|  |     </EmbeddedResource> | ||||||
|  |     <None Include="Properties\Settings.settings"> | ||||||
|  |       <Generator>SettingsSingleFileGenerator</Generator> | ||||||
|  |       <LastGenOutput>Settings.Designer.cs</LastGenOutput> | ||||||
|  |     </None> | ||||||
|  |     <AppDesigner Include="Properties\" /> | ||||||
|  |   </ItemGroup> | ||||||
|  |   <ItemGroup> | ||||||
|  |     <None Include="App.config" /> | ||||||
|  |   </ItemGroup> | ||||||
|  |   <ItemGroup> | ||||||
|  |     <ProjectReference Include="..\Filtration.ObjectModel\Filtration.ObjectModel.csproj"> | ||||||
|  |       <Project>{4aac3beb-1dc1-483e-9d11-0e9334e80227}</Project> | ||||||
|  |       <Name>Filtration.ObjectModel</Name> | ||||||
|  |     </ProjectReference> | ||||||
|  |   </ItemGroup> | ||||||
|  |   <ItemGroup /> | ||||||
|  |   <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" /> | ||||||
|  |   <!-- To modify your build process, add your task inside one of the targets below and uncomment it.  | ||||||
|  |        Other similar extension points exist, see Microsoft.Common.targets. | ||||||
|  |   <Target Name="BeforeBuild"> | ||||||
|  |   </Target> | ||||||
|  |   <Target Name="AfterBuild"> | ||||||
|  |   </Target> | ||||||
|  |   --> | ||||||
|  | </Project> | ||||||
							
								
								
									
										28
									
								
								Filtration.ItemFilterPreview/MainWindow.xaml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										28
									
								
								Filtration.ItemFilterPreview/MainWindow.xaml
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,28 @@ | |||||||
|  | <Window x:Class="Filtration.ItemFilterPreview.MainWindow" | ||||||
|  |         xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" | ||||||
|  |         xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" | ||||||
|  |         xmlns:d="http://schemas.microsoft.com/expression/blend/2008" | ||||||
|  |         xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" | ||||||
|  |         xmlns:local="clr-namespace:Filtration.ItemFilterPreview" | ||||||
|  |         xmlns:userControls="clr-namespace:Filtration.ItemFilterPreview.UserControls" | ||||||
|  |         mc:Ignorable="d" | ||||||
|  |         Title="MainWindow" Height="350" Width="525"> | ||||||
|  |     <Grid> | ||||||
|  |         <Grid Background="Black"> | ||||||
|  |             <Grid.RowDefinitions> | ||||||
|  |                 <RowDefinition /> | ||||||
|  |                 <RowDefinition /> | ||||||
|  |                 <RowDefinition /> | ||||||
|  |                 <RowDefinition /> | ||||||
|  |                 <RowDefinition /> | ||||||
|  |             </Grid.RowDefinitions> | ||||||
|  |             <Grid.ColumnDefinitions> | ||||||
|  |                 <ColumnDefinition /> | ||||||
|  |                 <ColumnDefinition /> | ||||||
|  |                 <ColumnDefinition /> | ||||||
|  |             </Grid.ColumnDefinitions> | ||||||
|  |             <userControls:ItemSocketsControl /> | ||||||
|  |         </Grid> | ||||||
|  |          | ||||||
|  |     </Grid> | ||||||
|  | </Window> | ||||||
							
								
								
									
										28
									
								
								Filtration.ItemFilterPreview/MainWindow.xaml.cs
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										28
									
								
								Filtration.ItemFilterPreview/MainWindow.xaml.cs
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,28 @@ | |||||||
|  | using System; | ||||||
|  | using System.Collections.Generic; | ||||||
|  | using System.Linq; | ||||||
|  | using System.Text; | ||||||
|  | using System.Threading.Tasks; | ||||||
|  | using System.Windows; | ||||||
|  | using System.Windows.Controls; | ||||||
|  | using System.Windows.Data; | ||||||
|  | using System.Windows.Documents; | ||||||
|  | using System.Windows.Input; | ||||||
|  | using System.Windows.Media; | ||||||
|  | using System.Windows.Media.Imaging; | ||||||
|  | using System.Windows.Navigation; | ||||||
|  | using System.Windows.Shapes; | ||||||
|  | 
 | ||||||
|  | namespace Filtration.ItemFilterPreview | ||||||
|  | { | ||||||
|  |     /// <summary> | ||||||
|  |     /// Interaction logic for MainWindow.xaml | ||||||
|  |     /// </summary> | ||||||
|  |     public partial class MainWindow : Window | ||||||
|  |     { | ||||||
|  |         public MainWindow() | ||||||
|  |         { | ||||||
|  |             InitializeComponent(); | ||||||
|  |         } | ||||||
|  |     } | ||||||
|  | } | ||||||
							
								
								
									
										74
									
								
								Filtration.ItemFilterPreview/Model/Item.cs
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										74
									
								
								Filtration.ItemFilterPreview/Model/Item.cs
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,74 @@ | |||||||
|  | using System; | ||||||
|  | using System.Collections.Generic; | ||||||
|  | using System.Linq; | ||||||
|  | using Filtration.ObjectModel.Enums; | ||||||
|  | 
 | ||||||
|  | namespace Filtration.ItemFilterPreview.Model | ||||||
|  | { | ||||||
|  |     public interface IItem | ||||||
|  |     { | ||||||
|  |         List<SocketGroup> SocketGroups { get; set; } | ||||||
|  |         string ItemClass { get; set; } | ||||||
|  |         string BaseType { get; set; } | ||||||
|  |         int DropLevel { get; set; } | ||||||
|  |         int ItemLevel { get; set; } | ||||||
|  |         int Height { get; set; } | ||||||
|  |         int Width { get; set; } | ||||||
|  |         int Quality { get; set; } | ||||||
|  |         ItemRarity ItemRarity { get; set; } | ||||||
|  |         int Sockets { get; } | ||||||
|  |         int LinkedSockets { get; } | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     public class Item : IItem | ||||||
|  |     { | ||||||
|  |         private List<SocketGroup> _socketGroups; | ||||||
|  | 
 | ||||||
|  |         public Item(List<SocketGroup> socketGroups) | ||||||
|  |         { | ||||||
|  |             | ||||||
|  |         } | ||||||
|  | 
 | ||||||
|  |         public List<SocketGroup> SocketGroups | ||||||
|  |         { | ||||||
|  |             get { return _socketGroups; } | ||||||
|  |             set | ||||||
|  |             { | ||||||
|  |                 var socketCount = value.Sum(s => s.Count); | ||||||
|  |                 if (socketCount < 1 || socketCount > 6) | ||||||
|  |                 { | ||||||
|  |                     throw new InvalidOperationException("An item must have between 1 and 6 sockets"); | ||||||
|  |                 } | ||||||
|  | 
 | ||||||
|  |                 var evenSocketCount = socketCount % 2 == 0; | ||||||
|  |                 var maxSocketGroups = evenSocketCount ? socketCount / 2 : socketCount - 1; | ||||||
|  |                 var maxLinkedSocketGroups = evenSocketCount ? maxSocketGroups : maxSocketGroups - 1; | ||||||
|  | 
 | ||||||
|  |                 if (value.Count > maxSocketGroups) | ||||||
|  |                 { | ||||||
|  |                     throw new InvalidOperationException("Invalid number of socket groups for the socket count of this item"); | ||||||
|  |                 } | ||||||
|  | 
 | ||||||
|  |                 if (value.Count(s => s.Linked) > maxLinkedSocketGroups) | ||||||
|  |                 { | ||||||
|  |                     throw new InvalidOperationException("Invalid number of linked socket groups for the socket count of this item"); | ||||||
|  |                 } | ||||||
|  | 
 | ||||||
|  |                 _socketGroups = value; | ||||||
|  |                 Sockets = socketCount; | ||||||
|  |                 LinkedSockets = value.Where(s => s.Linked).Max(s => s.Count); | ||||||
|  |             } | ||||||
|  |         } | ||||||
|  | 
 | ||||||
|  |         public string ItemClass { get; set; } | ||||||
|  |         public string BaseType { get; set; } | ||||||
|  |         public int DropLevel { get; set; } | ||||||
|  |         public int ItemLevel { get; set; } | ||||||
|  |         public int Height { get; set; } | ||||||
|  |         public int Width { get; set; } | ||||||
|  |         public int Quality { get; set; } | ||||||
|  |         public ItemRarity ItemRarity { get; set; } | ||||||
|  |         public int Sockets { get; private set; } | ||||||
|  |         public int LinkedSockets { get; private set; } | ||||||
|  |     } | ||||||
|  | } | ||||||
							
								
								
									
										9
									
								
								Filtration.ItemFilterPreview/Model/ItemCollection.cs
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										9
									
								
								Filtration.ItemFilterPreview/Model/ItemCollection.cs
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,9 @@ | |||||||
|  | using System.Collections.Generic; | ||||||
|  | 
 | ||||||
|  | namespace Filtration.ItemFilterPreview.Model | ||||||
|  | { | ||||||
|  |     class FilteredItemDictionary : Dictionary<Item, bool> | ||||||
|  |     { | ||||||
|  | 
 | ||||||
|  |     } | ||||||
|  | } | ||||||
							
								
								
									
										14
									
								
								Filtration.ItemFilterPreview/Model/Socket.cs
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										14
									
								
								Filtration.ItemFilterPreview/Model/Socket.cs
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,14 @@ | |||||||
|  | using System.Windows.Media; | ||||||
|  | 
 | ||||||
|  | namespace Filtration.ItemFilterPreview.Model | ||||||
|  | { | ||||||
|  |     public class Socket | ||||||
|  |     { | ||||||
|  |         public Socket(Color color) | ||||||
|  |         { | ||||||
|  |             Color = color; | ||||||
|  |         } | ||||||
|  | 
 | ||||||
|  |         public Color Color { get; } | ||||||
|  |     } | ||||||
|  | } | ||||||
							
								
								
									
										27
									
								
								Filtration.ItemFilterPreview/Model/SocketGroup.cs
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										27
									
								
								Filtration.ItemFilterPreview/Model/SocketGroup.cs
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,27 @@ | |||||||
|  | using System; | ||||||
|  | using System.Collections.Generic; | ||||||
|  | 
 | ||||||
|  | namespace Filtration.ItemFilterPreview.Model | ||||||
|  | { | ||||||
|  |     public class SocketGroup : List<Socket> | ||||||
|  |     { | ||||||
|  |         public SocketGroup(List<Socket> sockets, bool linked) | ||||||
|  |         { | ||||||
|  |             if (sockets.Count < 1 || sockets.Count > 6) | ||||||
|  |             { | ||||||
|  |                 throw new InvalidOperationException("A socket group must have between 2 and 6 sockets"); | ||||||
|  |             } | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  |             if (linked && sockets.Count < 2) | ||||||
|  |             { | ||||||
|  |                 throw new InvalidOperationException("A linked socket group must have at least 2 sockets"); | ||||||
|  |             } | ||||||
|  | 
 | ||||||
|  |             AddRange(sockets); | ||||||
|  |             Linked = linked; | ||||||
|  |         } | ||||||
|  | 
 | ||||||
|  |         public bool Linked { get; } | ||||||
|  |     } | ||||||
|  | } | ||||||
							
								
								
									
										59
									
								
								Filtration.ItemFilterPreview/Properties/AssemblyInfo.cs
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										59
									
								
								Filtration.ItemFilterPreview/Properties/AssemblyInfo.cs
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,59 @@ | |||||||
|  | using System.Reflection; | ||||||
|  | using System.Resources; | ||||||
|  | using System.Runtime.CompilerServices; | ||||||
|  | using System.Runtime.InteropServices; | ||||||
|  | using System.Windows; | ||||||
|  | 
 | ||||||
|  | // General Information about an assembly is controlled through the following  | ||||||
|  | // set of attributes. Change these attribute values to modify the information | ||||||
|  | // associated with an assembly. | ||||||
|  | [assembly: AssemblyTitle("Filtration.ItemFilterPreview")] | ||||||
|  | [assembly: AssemblyDescription("")] | ||||||
|  | [assembly: AssemblyConfiguration("")] | ||||||
|  | [assembly: AssemblyCompany("")] | ||||||
|  | [assembly: AssemblyProduct("Filtration.ItemFilterPreview")] | ||||||
|  | [assembly: AssemblyCopyright("Copyright ©  2015")] | ||||||
|  | [assembly: AssemblyTrademark("")] | ||||||
|  | [assembly: AssemblyCulture("")] | ||||||
|  | 
 | ||||||
|  | // Setting ComVisible to false makes the types in this assembly not visible  | ||||||
|  | // to COM components.  If you need to access a type in this assembly from  | ||||||
|  | // COM, set the ComVisible attribute to true on that type. | ||||||
|  | [assembly: ComVisible(false)] | ||||||
|  | 
 | ||||||
|  | //In order to begin building localizable applications, set  | ||||||
|  | //<UICulture>CultureYouAreCodingWith</UICulture> in your .csproj file | ||||||
|  | //inside a <PropertyGroup>.  For example, if you are using US english | ||||||
|  | //in your source files, set the <UICulture> to en-US.  Then uncomment | ||||||
|  | //the NeutralResourceLanguage attribute below.  Update the "en-US" in | ||||||
|  | //the line below to match the UICulture setting in the project file. | ||||||
|  | 
 | ||||||
|  | //[assembly: NeutralResourcesLanguage("en-US", UltimateResourceFallbackLocation.Satellite)] | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | [assembly: ThemeInfo( | ||||||
|  |     ResourceDictionaryLocation.None, //where theme specific resource dictionaries are located | ||||||
|  |                                      //(used if a resource is not found in the page,  | ||||||
|  |                                      // or application resource dictionaries) | ||||||
|  |     ResourceDictionaryLocation.SourceAssembly //where the generic resource dictionary is located | ||||||
|  |                                               //(used if a resource is not found in the page,  | ||||||
|  |                                               // app, or any theme specific resource dictionaries) | ||||||
|  | )] | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | // Version information for an assembly consists of the following four values: | ||||||
|  | // | ||||||
|  | //      Major Version | ||||||
|  | //      Minor Version  | ||||||
|  | //      Build Number | ||||||
|  | //      Revision | ||||||
|  | // | ||||||
|  | // You can specify all the values or you can default the Build and Revision Numbers  | ||||||
|  | // by using the '*' as shown below: | ||||||
|  | // [assembly: AssemblyVersion("1.0.*")] | ||||||
|  | [assembly: AssemblyVersion("1.0.0.0")] | ||||||
|  | [assembly: AssemblyFileVersion("1.0.0.0")] | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | [assembly: InternalsVisibleTo("Filtration.ItemFilterPreview.Tests")] | ||||||
|  | [assembly: InternalsVisibleTo("DynamicProxyGenAssembly2")] | ||||||
							
								
								
									
										63
									
								
								Filtration.ItemFilterPreview/Properties/Resources.Designer.cs
									
									
									
										generated
									
									
									
										Normal file
									
								
							
							
						
						
									
										63
									
								
								Filtration.ItemFilterPreview/Properties/Resources.Designer.cs
									
									
									
										generated
									
									
									
										Normal file
									
								
							| @ -0,0 +1,63 @@ | |||||||
|  | //------------------------------------------------------------------------------ | ||||||
|  | // <auto-generated> | ||||||
|  | //     This code was generated by a tool. | ||||||
|  | //     Runtime Version:4.0.30319.42000 | ||||||
|  | // | ||||||
|  | //     Changes to this file may cause incorrect behavior and will be lost if | ||||||
|  | //     the code is regenerated. | ||||||
|  | // </auto-generated> | ||||||
|  | //------------------------------------------------------------------------------ | ||||||
|  | 
 | ||||||
|  | namespace Filtration.ItemFilterPreview.Properties { | ||||||
|  |     using System; | ||||||
|  |      | ||||||
|  |      | ||||||
|  |     /// <summary> | ||||||
|  |     ///   A strongly-typed resource class, for looking up localized strings, etc. | ||||||
|  |     /// </summary> | ||||||
|  |     // This class was auto-generated by the StronglyTypedResourceBuilder | ||||||
|  |     // class via a tool like ResGen or Visual Studio. | ||||||
|  |     // To add or remove a member, edit your .ResX file then rerun ResGen | ||||||
|  |     // with the /str option, or rebuild your VS project. | ||||||
|  |     [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")] | ||||||
|  |     [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] | ||||||
|  |     [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] | ||||||
|  |     internal class Resources { | ||||||
|  |          | ||||||
|  |         private static global::System.Resources.ResourceManager resourceMan; | ||||||
|  |          | ||||||
|  |         private static global::System.Globalization.CultureInfo resourceCulture; | ||||||
|  |          | ||||||
|  |         [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] | ||||||
|  |         internal Resources() { | ||||||
|  |         } | ||||||
|  |          | ||||||
|  |         /// <summary> | ||||||
|  |         ///   Returns the cached ResourceManager instance used by this class. | ||||||
|  |         /// </summary> | ||||||
|  |         [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] | ||||||
|  |         internal static global::System.Resources.ResourceManager ResourceManager { | ||||||
|  |             get { | ||||||
|  |                 if (object.ReferenceEquals(resourceMan, null)) { | ||||||
|  |                     global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("Filtration.ItemFilterPreview.Properties.Resources", typeof(Resources).Assembly); | ||||||
|  |                     resourceMan = temp; | ||||||
|  |                 } | ||||||
|  |                 return resourceMan; | ||||||
|  |             } | ||||||
|  |         } | ||||||
|  |          | ||||||
|  |         /// <summary> | ||||||
|  |         ///   Overrides the current thread's CurrentUICulture property for all | ||||||
|  |         ///   resource lookups using this strongly typed resource class. | ||||||
|  |         /// </summary> | ||||||
|  |         [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] | ||||||
|  |         internal static global::System.Globalization.CultureInfo Culture { | ||||||
|  |             get { | ||||||
|  |                 return resourceCulture; | ||||||
|  |             } | ||||||
|  |             set { | ||||||
|  |                 resourceCulture = value; | ||||||
|  |             } | ||||||
|  |         } | ||||||
|  |     } | ||||||
|  | } | ||||||
							
								
								
									
										117
									
								
								Filtration.ItemFilterPreview/Properties/Resources.resx
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										117
									
								
								Filtration.ItemFilterPreview/Properties/Resources.resx
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,117 @@ | |||||||
|  | <?xml version="1.0" encoding="utf-8"?> | ||||||
|  | <root> | ||||||
|  |   <!--  | ||||||
|  |     Microsoft ResX Schema  | ||||||
|  |      | ||||||
|  |     Version 2.0 | ||||||
|  |      | ||||||
|  |     The primary goals of this format is to allow a simple XML format  | ||||||
|  |     that is mostly human readable. The generation and parsing of the  | ||||||
|  |     various data types are done through the TypeConverter classes  | ||||||
|  |     associated with the data types. | ||||||
|  |      | ||||||
|  |     Example: | ||||||
|  |      | ||||||
|  |     ... ado.net/XML headers & schema ... | ||||||
|  |     <resheader name="resmimetype">text/microsoft-resx</resheader> | ||||||
|  |     <resheader name="version">2.0</resheader> | ||||||
|  |     <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader> | ||||||
|  |     <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader> | ||||||
|  |     <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data> | ||||||
|  |     <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data> | ||||||
|  |     <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64"> | ||||||
|  |         <value>[base64 mime encoded serialized .NET Framework object]</value> | ||||||
|  |     </data> | ||||||
|  |     <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64"> | ||||||
|  |         <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value> | ||||||
|  |         <comment>This is a comment</comment> | ||||||
|  |     </data> | ||||||
|  |                  | ||||||
|  |     There are any number of "resheader" rows that contain simple  | ||||||
|  |     name/value pairs. | ||||||
|  |      | ||||||
|  |     Each data row contains a name, and value. The row also contains a  | ||||||
|  |     type or mimetype. Type corresponds to a .NET class that support  | ||||||
|  |     text/value conversion through the TypeConverter architecture.  | ||||||
|  |     Classes that don't support this are serialized and stored with the  | ||||||
|  |     mimetype set. | ||||||
|  |      | ||||||
|  |     The mimetype is used for serialized objects, and tells the  | ||||||
|  |     ResXResourceReader how to depersist the object. This is currently not  | ||||||
|  |     extensible. For a given mimetype the value must be set accordingly: | ||||||
|  |      | ||||||
|  |     Note - application/x-microsoft.net.object.binary.base64 is the format  | ||||||
|  |     that the ResXResourceWriter will generate, however the reader can  | ||||||
|  |     read any of the formats listed below. | ||||||
|  |      | ||||||
|  |     mimetype: application/x-microsoft.net.object.binary.base64 | ||||||
|  |     value   : The object must be serialized with  | ||||||
|  |             : System.Serialization.Formatters.Binary.BinaryFormatter | ||||||
|  |             : and then encoded with base64 encoding. | ||||||
|  |      | ||||||
|  |     mimetype: application/x-microsoft.net.object.soap.base64 | ||||||
|  |     value   : The object must be serialized with  | ||||||
|  |             : System.Runtime.Serialization.Formatters.Soap.SoapFormatter | ||||||
|  |             : and then encoded with base64 encoding. | ||||||
|  | 
 | ||||||
|  |     mimetype: application/x-microsoft.net.object.bytearray.base64 | ||||||
|  |     value   : The object must be serialized into a byte array  | ||||||
|  |             : using a System.ComponentModel.TypeConverter | ||||||
|  |             : and then encoded with base64 encoding. | ||||||
|  |     --> | ||||||
|  |   <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata"> | ||||||
|  |     <xsd:element name="root" msdata:IsDataSet="true"> | ||||||
|  |       <xsd:complexType> | ||||||
|  |         <xsd:choice maxOccurs="unbounded"> | ||||||
|  |           <xsd:element name="metadata"> | ||||||
|  |             <xsd:complexType> | ||||||
|  |               <xsd:sequence> | ||||||
|  |                 <xsd:element name="value" type="xsd:string" minOccurs="0" /> | ||||||
|  |               </xsd:sequence> | ||||||
|  |               <xsd:attribute name="name" type="xsd:string" /> | ||||||
|  |               <xsd:attribute name="type" type="xsd:string" /> | ||||||
|  |               <xsd:attribute name="mimetype" type="xsd:string" /> | ||||||
|  |             </xsd:complexType> | ||||||
|  |           </xsd:element> | ||||||
|  |           <xsd:element name="assembly"> | ||||||
|  |             <xsd:complexType> | ||||||
|  |               <xsd:attribute name="alias" type="xsd:string" /> | ||||||
|  |               <xsd:attribute name="name" type="xsd:string" /> | ||||||
|  |             </xsd:complexType> | ||||||
|  |           </xsd:element> | ||||||
|  |           <xsd:element name="data"> | ||||||
|  |             <xsd:complexType> | ||||||
|  |               <xsd:sequence> | ||||||
|  |                 <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" /> | ||||||
|  |                 <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" /> | ||||||
|  |               </xsd:sequence> | ||||||
|  |               <xsd:attribute name="name" type="xsd:string" msdata:Ordinal="1" /> | ||||||
|  |               <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" /> | ||||||
|  |               <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" /> | ||||||
|  |             </xsd:complexType> | ||||||
|  |           </xsd:element> | ||||||
|  |           <xsd:element name="resheader"> | ||||||
|  |             <xsd:complexType> | ||||||
|  |               <xsd:sequence> | ||||||
|  |                 <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" /> | ||||||
|  |               </xsd:sequence> | ||||||
|  |               <xsd:attribute name="name" type="xsd:string" use="required" /> | ||||||
|  |             </xsd:complexType> | ||||||
|  |           </xsd:element> | ||||||
|  |         </xsd:choice> | ||||||
|  |       </xsd:complexType> | ||||||
|  |     </xsd:element> | ||||||
|  |   </xsd:schema> | ||||||
|  |   <resheader name="resmimetype"> | ||||||
|  |     <value>text/microsoft-resx</value> | ||||||
|  |   </resheader> | ||||||
|  |   <resheader name="version"> | ||||||
|  |     <value>2.0</value> | ||||||
|  |   </resheader> | ||||||
|  |   <resheader name="reader"> | ||||||
|  |     <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> | ||||||
|  |   </resheader> | ||||||
|  |   <resheader name="writer"> | ||||||
|  |     <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> | ||||||
|  |   </resheader> | ||||||
|  | </root> | ||||||
							
								
								
									
										26
									
								
								Filtration.ItemFilterPreview/Properties/Settings.Designer.cs
									
									
									
										generated
									
									
									
										Normal file
									
								
							
							
						
						
									
										26
									
								
								Filtration.ItemFilterPreview/Properties/Settings.Designer.cs
									
									
									
										generated
									
									
									
										Normal file
									
								
							| @ -0,0 +1,26 @@ | |||||||
|  | //------------------------------------------------------------------------------ | ||||||
|  | // <auto-generated> | ||||||
|  | //     This code was generated by a tool. | ||||||
|  | //     Runtime Version:4.0.30319.42000 | ||||||
|  | // | ||||||
|  | //     Changes to this file may cause incorrect behavior and will be lost if | ||||||
|  | //     the code is regenerated. | ||||||
|  | // </auto-generated> | ||||||
|  | //------------------------------------------------------------------------------ | ||||||
|  | 
 | ||||||
|  | namespace Filtration.ItemFilterPreview.Properties { | ||||||
|  |      | ||||||
|  |      | ||||||
|  |     [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] | ||||||
|  |     [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "14.0.0.0")] | ||||||
|  |     internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase { | ||||||
|  |          | ||||||
|  |         private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings()))); | ||||||
|  |          | ||||||
|  |         public static Settings Default { | ||||||
|  |             get { | ||||||
|  |                 return defaultInstance; | ||||||
|  |             } | ||||||
|  |         } | ||||||
|  |     } | ||||||
|  | } | ||||||
| @ -0,0 +1,7 @@ | |||||||
|  | <?xml version='1.0' encoding='utf-8'?> | ||||||
|  | <SettingsFile xmlns="uri:settings" CurrentProfile="(Default)"> | ||||||
|  |   <Profiles> | ||||||
|  |     <Profile Name="(Default)" /> | ||||||
|  |   </Profiles> | ||||||
|  |   <Settings /> | ||||||
|  | </SettingsFile> | ||||||
| @ -0,0 +1,65 @@ | |||||||
|  | using System; | ||||||
|  | using System.Linq; | ||||||
|  | using Filtration.ItemFilterPreview.Model; | ||||||
|  | using Filtration.ObjectModel.BlockItemBaseTypes; | ||||||
|  | using Filtration.ObjectModel.BlockItemTypes; | ||||||
|  | using Filtration.ObjectModel.Enums; | ||||||
|  | 
 | ||||||
|  | namespace Filtration.ItemFilterPreview.Services | ||||||
|  | { | ||||||
|  |     internal interface IItemBlockItemMatcher | ||||||
|  |     { | ||||||
|  |         bool BaseTypeBlockItemMatch(BaseTypeBlockItem baseTypeBlockItem, IItem item); | ||||||
|  |         bool ClassBlockItemMatch(ClassBlockItem classBlockItem, IItem item); | ||||||
|  |         bool DropLevelBlockItemMatch(DropLevelBlockItem dropLevelBlockItem, IItem item); | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     internal class ItemBlockItemMatcher : IItemBlockItemMatcher | ||||||
|  |     { | ||||||
|  |         public bool BaseTypeBlockItemMatch(BaseTypeBlockItem baseTypeBlockItem, IItem item) | ||||||
|  |         { | ||||||
|  |             return baseTypeBlockItem.Items.Any(b => item.BaseType.StartsWith(b)); | ||||||
|  |         } | ||||||
|  | 
 | ||||||
|  |         public bool ClassBlockItemMatch(ClassBlockItem classBlockItem, IItem item) | ||||||
|  |         { | ||||||
|  |             return classBlockItem.Items.Any(c => item.ItemClass.StartsWith(c)); | ||||||
|  |         } | ||||||
|  | 
 | ||||||
|  |         public bool DropLevelBlockItemMatch(DropLevelBlockItem dropLevelBlockItem, IItem item) | ||||||
|  |         { | ||||||
|  |             return NumericFilterPredicateBlockItemMatch(dropLevelBlockItem, item.DropLevel); | ||||||
|  |         } | ||||||
|  | 
 | ||||||
|  |         private bool NumericFilterPredicateBlockItemMatch<T>(T numericFilterPredicateBlockItem, int matchValue) where T : NumericFilterPredicateBlockItem | ||||||
|  |         { | ||||||
|  |             switch (numericFilterPredicateBlockItem.FilterPredicate.PredicateOperator) | ||||||
|  |             { | ||||||
|  |                 case FilterPredicateOperator.Equal: | ||||||
|  |                 { | ||||||
|  |                     return matchValue == numericFilterPredicateBlockItem.FilterPredicate.PredicateOperand; | ||||||
|  |                 } | ||||||
|  |                 case FilterPredicateOperator.GreaterThan: | ||||||
|  |                 { | ||||||
|  |                     return matchValue > numericFilterPredicateBlockItem.FilterPredicate.PredicateOperand; | ||||||
|  |                 } | ||||||
|  |                 case FilterPredicateOperator.GreaterThanOrEqual: | ||||||
|  |                 { | ||||||
|  |                     return matchValue >= numericFilterPredicateBlockItem.FilterPredicate.PredicateOperand; | ||||||
|  |                 } | ||||||
|  |                 case FilterPredicateOperator.LessThan: | ||||||
|  |                 { | ||||||
|  |                     return matchValue < numericFilterPredicateBlockItem.FilterPredicate.PredicateOperand; | ||||||
|  |                 } | ||||||
|  |                 case FilterPredicateOperator.LessThanOrEqual: | ||||||
|  |                 { | ||||||
|  |                     return matchValue <= numericFilterPredicateBlockItem.FilterPredicate.PredicateOperand; | ||||||
|  |                 } | ||||||
|  |                 default: | ||||||
|  |                 { | ||||||
|  |                     return false; | ||||||
|  |                 } | ||||||
|  |             } | ||||||
|  |         } | ||||||
|  |     } | ||||||
|  | } | ||||||
							
								
								
									
										34
									
								
								Filtration.ItemFilterPreview/Services/ItemFilterProcessor.cs
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										34
									
								
								Filtration.ItemFilterPreview/Services/ItemFilterProcessor.cs
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,34 @@ | |||||||
|  | using System.Linq; | ||||||
|  | using Filtration.ItemFilterPreview.Model; | ||||||
|  | using Filtration.ObjectModel; | ||||||
|  | using Filtration.ObjectModel.BlockItemBaseTypes; | ||||||
|  | using Filtration.ObjectModel.BlockItemTypes; | ||||||
|  | using Filtration.ObjectModel.Enums; | ||||||
|  | 
 | ||||||
|  | namespace Filtration.ItemFilterPreview.Services | ||||||
|  | { | ||||||
|  |     public class ItemFilterProcessor | ||||||
|  |     { | ||||||
|  |         private IItemFilterScript _itemFilterScript; | ||||||
|  | 
 | ||||||
|  |         public ItemFilterProcessor() | ||||||
|  |         { | ||||||
|  |              | ||||||
|  |         } | ||||||
|  | 
 | ||||||
|  |         public void LoadItemFilterScript(IItemFilterScript itemFilterScript) | ||||||
|  |         { | ||||||
|  |             _itemFilterScript = itemFilterScript; | ||||||
|  |         } | ||||||
|  | 
 | ||||||
|  |         public void ItemIsVisible(IItem item) | ||||||
|  |         { | ||||||
|  |             foreach (var block in _itemFilterScript.ItemFilterBlocks) | ||||||
|  |             { | ||||||
|  |                  | ||||||
|  |             } | ||||||
|  |         } | ||||||
|  | 
 | ||||||
|  |          | ||||||
|  |     } | ||||||
|  | } | ||||||
| @ -0,0 +1,55 @@ | |||||||
|  | <UserControl x:Class="Filtration.ItemFilterPreview.UserControls.ItemSocketsControl" | ||||||
|  |              xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" | ||||||
|  |              xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" | ||||||
|  |              xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"  | ||||||
|  |              xmlns:d="http://schemas.microsoft.com/expression/blend/2008"  | ||||||
|  |              xmlns:local="clr-namespace:Filtration.ItemFilterPreview.UserControls" | ||||||
|  |              mc:Ignorable="d" SizeChanged="ItemSocketsControl_OnSizeChanged"  RenderOptions.EdgeMode="Aliased" | ||||||
|  |              Height="30" Width="20" > | ||||||
|  |     <Grid> | ||||||
|  |         <Grid.ColumnDefinitions> | ||||||
|  |             <ColumnDefinition Width="2*"/> | ||||||
|  |             <ColumnDefinition Width="3*"/> | ||||||
|  |             <ColumnDefinition Width="2*"/> | ||||||
|  |             <ColumnDefinition Width="4*"/> | ||||||
|  |             <ColumnDefinition Width="2*"/> | ||||||
|  |             <ColumnDefinition Width="3*"/> | ||||||
|  |             <ColumnDefinition Width="2*"/> | ||||||
|  |         </Grid.ColumnDefinitions> | ||||||
|  |         <Grid.RowDefinitions> | ||||||
|  |             <RowDefinition Height="2*"/> | ||||||
|  |             <RowDefinition Height="3*"/> | ||||||
|  |             <RowDefinition Height="2*"/> | ||||||
|  |             <RowDefinition Height="4*"/> | ||||||
|  |             <RowDefinition Height="2*"/> | ||||||
|  |             <RowDefinition Height="3*"/> | ||||||
|  |             <RowDefinition Height="2*"/> | ||||||
|  |             <RowDefinition Height="4*"/> | ||||||
|  |             <RowDefinition Height="2*"/> | ||||||
|  |             <RowDefinition Height="3*"/> | ||||||
|  |             <RowDefinition Height="2*"/> | ||||||
|  |         </Grid.RowDefinitions> | ||||||
|  | 
 | ||||||
|  |         <Border Grid.Row="0" Grid.RowSpan="3" Grid.Column="0" Grid.ColumnSpan="3" Background="Tomato" /> | ||||||
|  | 
 | ||||||
|  |         <Border Grid.Row="1" Grid.Column="3" Background="White" /> | ||||||
|  | 
 | ||||||
|  |         <Border Grid.Row="0" Grid.RowSpan="3" Grid.Column="4" Grid.ColumnSpan="3" Background="GreenYellow" /> | ||||||
|  | 
 | ||||||
|  |         <Border Grid.Row="3" Grid.Column="5" Background="White" /> | ||||||
|  | 
 | ||||||
|  |         <Border Grid.Row="4" Grid.RowSpan="3" Grid.Column="4" Grid.ColumnSpan="3" Background="GreenYellow" /> | ||||||
|  | 
 | ||||||
|  |         <Border Grid.Row="5" Grid.Column="3"  Background="White" /> | ||||||
|  | 
 | ||||||
|  |         <Border Grid.Row="4" Grid.RowSpan="3" Grid.Column="0" Grid.ColumnSpan="3" Background="CornflowerBlue" /> | ||||||
|  | 
 | ||||||
|  |         <Border Grid.Row="7" Grid.Column="1" Background="White" /> | ||||||
|  | 
 | ||||||
|  |         <Border Grid.Row="8" Grid.RowSpan="3" Grid.Column="0" Grid.ColumnSpan="3" Background="CornflowerBlue" /> | ||||||
|  | 
 | ||||||
|  |         <Border Grid.Row="9" Grid.Column="3"  Background="White" /> | ||||||
|  | 
 | ||||||
|  |         <Border Grid.Row="8" Grid.RowSpan="3" Grid.Column="4" Grid.ColumnSpan="3" Background="Tomato" /> | ||||||
|  |     </Grid> | ||||||
|  | </UserControl> | ||||||
| @ -0,0 +1,18 @@ | |||||||
|  | using System.Windows; | ||||||
|  | 
 | ||||||
|  | namespace Filtration.ItemFilterPreview.UserControls | ||||||
|  | { | ||||||
|  |     public partial class ItemSocketsControl | ||||||
|  |     { | ||||||
|  |         public ItemSocketsControl() | ||||||
|  |         { | ||||||
|  |             InitializeComponent(); | ||||||
|  |         } | ||||||
|  | 
 | ||||||
|  |         private void ItemSocketsControl_OnSizeChanged(object sender, SizeChangedEventArgs e) | ||||||
|  |         { | ||||||
|  |             const double ratio = 2d/3d; | ||||||
|  |             Width = Height * ratio; | ||||||
|  |         } | ||||||
|  |     } | ||||||
|  | } | ||||||
| @ -6,8 +6,6 @@ namespace Filtration.ObjectModel.Enums | |||||||
|     { |     { | ||||||
|         [Description("=")] |         [Description("=")] | ||||||
|         Equal, |         Equal, | ||||||
|         [Description("!=")] |  | ||||||
|         NotEqual, |  | ||||||
|         [Description("<")] |         [Description("<")] | ||||||
|         LessThan, |         LessThan, | ||||||
|         [Description("<=")] |         [Description("<=")] | ||||||
|  | |||||||
| @ -88,12 +88,7 @@ namespace Filtration.ObjectModel | |||||||
|                 return false; |                 return false; | ||||||
|             } |             } | ||||||
| 
 | 
 | ||||||
|             if (startingBlockGroup.ParentGroup != null) |             return startingBlockGroup.ParentGroup != null && HasBlockGroupInParentHierarchy(targetBlockGroup, startingBlockGroup.ParentGroup); | ||||||
|             { |  | ||||||
|                 return HasBlockGroupInParentHierarchy(targetBlockGroup, startingBlockGroup.ParentGroup); |  | ||||||
|             } |  | ||||||
| 
 |  | ||||||
|             return false; |  | ||||||
|         } |         } | ||||||
|          |          | ||||||
|         private void OnBlockGroupStatusChanged(object sender, EventArgs e) |         private void OnBlockGroupStatusChanged(object sender, EventArgs e) | ||||||
|  | |||||||
| @ -7,7 +7,19 @@ using Filtration.ObjectModel.ThemeEditor; | |||||||
| 
 | 
 | ||||||
| namespace Filtration.ObjectModel | namespace Filtration.ObjectModel | ||||||
| { | { | ||||||
|     public class ItemFilterScript |     public interface IItemFilterScript | ||||||
|  |     { | ||||||
|  |         ObservableCollection<ItemFilterBlock> ItemFilterBlocks { get; } | ||||||
|  |         ObservableCollection<ItemFilterBlockGroup> ItemFilterBlockGroups { get; } | ||||||
|  |         ThemeComponentCollection ThemeComponents { get; set; } | ||||||
|  |         string FilePath { get; set; } | ||||||
|  |         string Description { get; set; } | ||||||
|  |         DateTime DateModified { get; set; } | ||||||
|  |         List<string> Validate(); | ||||||
|  |         void ReplaceColors(ReplaceColorsParameterSet replaceColorsParameterSet); | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     public class ItemFilterScript : IItemFilterScript | ||||||
|     { |     { | ||||||
|         public ItemFilterScript() |         public ItemFilterScript() | ||||||
|         { |         { | ||||||
|  | |||||||
| @ -346,7 +346,7 @@ namespace Filtration.Tests.Translators | |||||||
|         { |         { | ||||||
|             // Arrange |             // Arrange | ||||||
|             var inputString = "Show" + Environment.NewLine + |             var inputString = "Show" + Environment.NewLine + | ||||||
|                               "    LinkedSockets != 1"; |                               "    LinkedSockets > 1"; | ||||||
| 
 | 
 | ||||||
|             // Act |             // Act | ||||||
|             var result = _testUtility.Translator.TranslateStringToItemFilterBlock(inputString, null); |             var result = _testUtility.Translator.TranslateStringToItemFilterBlock(inputString, null); | ||||||
| @ -356,7 +356,7 @@ namespace Filtration.Tests.Translators | |||||||
|             Assert.AreEqual(1, result.BlockItems.Count(b => b is LinkedSocketsBlockItem)); |             Assert.AreEqual(1, result.BlockItems.Count(b => b is LinkedSocketsBlockItem)); | ||||||
|             var blockItem = result.BlockItems.OfType<LinkedSocketsBlockItem>().First(); |             var blockItem = result.BlockItems.OfType<LinkedSocketsBlockItem>().First(); | ||||||
|             Assert.AreEqual(1, blockItem.FilterPredicate.PredicateOperand); |             Assert.AreEqual(1, blockItem.FilterPredicate.PredicateOperand); | ||||||
|             Assert.AreEqual(FilterPredicateOperator.NotEqual, blockItem.FilterPredicate.PredicateOperator); |             Assert.AreEqual(FilterPredicateOperator.GreaterThan, blockItem.FilterPredicate.PredicateOperator); | ||||||
|         } |         } | ||||||
| 
 | 
 | ||||||
|         [Test] |         [Test] | ||||||
| @ -364,7 +364,7 @@ namespace Filtration.Tests.Translators | |||||||
|         { |         { | ||||||
|             // Arrange |             // Arrange | ||||||
|             var inputString = "Show" + Environment.NewLine + |             var inputString = "Show" + Environment.NewLine + | ||||||
|                               "    Width != 1"; |                               "    Width = 1"; | ||||||
| 
 | 
 | ||||||
|             // Act |             // Act | ||||||
|             var result = _testUtility.Translator.TranslateStringToItemFilterBlock(inputString, null); |             var result = _testUtility.Translator.TranslateStringToItemFilterBlock(inputString, null); | ||||||
| @ -374,7 +374,7 @@ namespace Filtration.Tests.Translators | |||||||
|             Assert.AreEqual(1, result.BlockItems.Count(b => b is WidthBlockItem)); |             Assert.AreEqual(1, result.BlockItems.Count(b => b is WidthBlockItem)); | ||||||
|             var blockItem = result.BlockItems.OfType<WidthBlockItem>().First(); |             var blockItem = result.BlockItems.OfType<WidthBlockItem>().First(); | ||||||
|             Assert.AreEqual(1, blockItem.FilterPredicate.PredicateOperand); |             Assert.AreEqual(1, blockItem.FilterPredicate.PredicateOperand); | ||||||
|             Assert.AreEqual(FilterPredicateOperator.NotEqual, blockItem.FilterPredicate.PredicateOperator); |             Assert.AreEqual(FilterPredicateOperator.Equal, blockItem.FilterPredicate.PredicateOperator); | ||||||
|         } |         } | ||||||
| 
 | 
 | ||||||
|         [Test] |         [Test] | ||||||
| @ -628,7 +628,7 @@ namespace Filtration.Tests.Translators | |||||||
|                               "    JunkLine Let's ignore this one!" + Environment.NewLine + |                               "    JunkLine Let's ignore this one!" + Environment.NewLine + | ||||||
|                               "    #Quality Commented out quality line" + Environment.NewLine + |                               "    #Quality Commented out quality line" + Environment.NewLine + | ||||||
|                               "    Sockets >= 3" + Environment.NewLine + |                               "    Sockets >= 3" + Environment.NewLine + | ||||||
|                               "    LinkedSockets != 2" + Environment.NewLine + |                               "    LinkedSockets = 2" + Environment.NewLine + | ||||||
|                               "    SocketGroup RGBB RGBWW" + Environment.NewLine + |                               "    SocketGroup RGBB RGBWW" + Environment.NewLine + | ||||||
|                               "    SetTextColor 50 100 3 200" + Environment.NewLine + |                               "    SetTextColor 50 100 3 200" + Environment.NewLine + | ||||||
|                               "    SetBackgroundColor 255 100 5" + Environment.NewLine + |                               "    SetBackgroundColor 255 100 5" + Environment.NewLine + | ||||||
| @ -673,7 +673,7 @@ namespace Filtration.Tests.Translators | |||||||
|             Assert.AreEqual(3, socketsblockItem.FilterPredicate.PredicateOperand); |             Assert.AreEqual(3, socketsblockItem.FilterPredicate.PredicateOperand); | ||||||
| 
 | 
 | ||||||
|             var linkedSocketsblockItem = result.BlockItems.OfType<LinkedSocketsBlockItem>().First(); |             var linkedSocketsblockItem = result.BlockItems.OfType<LinkedSocketsBlockItem>().First(); | ||||||
|             Assert.AreEqual(FilterPredicateOperator.NotEqual, linkedSocketsblockItem.FilterPredicate.PredicateOperator); |             Assert.AreEqual(FilterPredicateOperator.Equal, linkedSocketsblockItem.FilterPredicate.PredicateOperator); | ||||||
|             Assert.AreEqual(2, linkedSocketsblockItem.FilterPredicate.PredicateOperand); |             Assert.AreEqual(2, linkedSocketsblockItem.FilterPredicate.PredicateOperand); | ||||||
| 
 | 
 | ||||||
|             var socketGroupblockItem = result.BlockItems.OfType<SocketGroupBlockItem>().First(); |             var socketGroupblockItem = result.BlockItems.OfType<SocketGroupBlockItem>().First(); | ||||||
| @ -1076,9 +1076,9 @@ namespace Filtration.Tests.Translators | |||||||
|         { |         { | ||||||
|             // Arrange |             // Arrange | ||||||
|             var expectedResult = "Show" + Environment.NewLine + |             var expectedResult = "Show" + Environment.NewLine + | ||||||
|                                  "    LinkedSockets != 3"; |                                  "    LinkedSockets = 3"; | ||||||
| 
 | 
 | ||||||
|             _testUtility.TestBlock.BlockItems.Add(new LinkedSocketsBlockItem(FilterPredicateOperator.NotEqual, 3)); |             _testUtility.TestBlock.BlockItems.Add(new LinkedSocketsBlockItem(FilterPredicateOperator.Equal, 3)); | ||||||
| 
 | 
 | ||||||
|             // Act |             // Act | ||||||
|             var result = _testUtility.Translator.TranslateItemFilterBlockToString(_testUtility.TestBlock); |             var result = _testUtility.Translator.TranslateItemFilterBlockToString(_testUtility.TestBlock); | ||||||
| @ -1321,7 +1321,7 @@ namespace Filtration.Tests.Translators | |||||||
|             var expectedResult = "Show" + Environment.NewLine + |             var expectedResult = "Show" + Environment.NewLine + | ||||||
|                                  "    ItemLevel > 70" + Environment.NewLine + |                                  "    ItemLevel > 70" + Environment.NewLine + | ||||||
|                                  "    ItemLevel <= 85" + Environment.NewLine + |                                  "    ItemLevel <= 85" + Environment.NewLine + | ||||||
|                                  "    DropLevel != 56" + Environment.NewLine + |                                  "    DropLevel > 56" + Environment.NewLine + | ||||||
|                                  "    Quality > 2" + Environment.NewLine + |                                  "    Quality > 2" + Environment.NewLine + | ||||||
|                                  "    Rarity = Unique" + Environment.NewLine + |                                  "    Rarity = Unique" + Environment.NewLine + | ||||||
|                                  "    Sockets <= 6" + Environment.NewLine + |                                  "    Sockets <= 6" + Environment.NewLine + | ||||||
| @ -1341,7 +1341,7 @@ namespace Filtration.Tests.Translators | |||||||
|             _testUtility.TestBlock.BlockItems.Add(new ActionBlockItem(BlockAction.Show)); |             _testUtility.TestBlock.BlockItems.Add(new ActionBlockItem(BlockAction.Show)); | ||||||
|             _testUtility.TestBlock.BlockItems.Add(new ItemLevelBlockItem(FilterPredicateOperator.GreaterThan, 70)); |             _testUtility.TestBlock.BlockItems.Add(new ItemLevelBlockItem(FilterPredicateOperator.GreaterThan, 70)); | ||||||
|             _testUtility.TestBlock.BlockItems.Add(new ItemLevelBlockItem(FilterPredicateOperator.LessThanOrEqual, 85)); |             _testUtility.TestBlock.BlockItems.Add(new ItemLevelBlockItem(FilterPredicateOperator.LessThanOrEqual, 85)); | ||||||
|             _testUtility.TestBlock.BlockItems.Add(new DropLevelBlockItem(FilterPredicateOperator.NotEqual, 56)); |             _testUtility.TestBlock.BlockItems.Add(new DropLevelBlockItem(FilterPredicateOperator.GreaterThan, 56)); | ||||||
|             _testUtility.TestBlock.BlockItems.Add(new QualityBlockItem(FilterPredicateOperator.GreaterThan, 2)); |             _testUtility.TestBlock.BlockItems.Add(new QualityBlockItem(FilterPredicateOperator.GreaterThan, 2)); | ||||||
|             _testUtility.TestBlock.BlockItems.Add(new RarityBlockItem(FilterPredicateOperator.Equal, (int)ItemRarity.Unique)); |             _testUtility.TestBlock.BlockItems.Add(new RarityBlockItem(FilterPredicateOperator.Equal, (int)ItemRarity.Unique)); | ||||||
|             var classItemblockItem = new ClassBlockItem(); |             var classItemblockItem = new ClassBlockItem(); | ||||||
|  | |||||||
| @ -66,7 +66,6 @@ | |||||||
|     <Reference Include="System" /> |     <Reference Include="System" /> | ||||||
|     <Reference Include="System.Core" /> |     <Reference Include="System.Core" /> | ||||||
|     <Reference Include="System.Drawing" /> |     <Reference Include="System.Drawing" /> | ||||||
|     <Reference Include="System.ObjectModel" /> |  | ||||||
|     <Reference Include="System.Windows.Forms" /> |     <Reference Include="System.Windows.Forms" /> | ||||||
|     <Reference Include="System.Windows.Interactivity, Version=4.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL"> |     <Reference Include="System.Windows.Interactivity, Version=4.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL"> | ||||||
|       <HintPath>..\packages\MvvmLightLibs.5.2.0.0\lib\net45\System.Windows.Interactivity.dll</HintPath> |       <HintPath>..\packages\MvvmLightLibs.5.2.0.0\lib\net45\System.Windows.Interactivity.dll</HintPath> | ||||||
|  | |||||||
							
								
								
									
										153
									
								
								Filtration.sln
									
									
									
									
									
								
							
							
						
						
									
										153
									
								
								Filtration.sln
									
									
									
									
									
								
							| @ -21,51 +21,198 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Filtration.Common", "Filtra | |||||||
| EndProject | EndProject | ||||||
| Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Filtration.Common.Tests", "Filtration.Common.Tests\Filtration.Common.Tests.csproj", "{1E42A658-45C4-4DD9-83C5-2A10728DBDFA}" | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Filtration.Common.Tests", "Filtration.Common.Tests\Filtration.Common.Tests.csproj", "{1E42A658-45C4-4DD9-83C5-2A10728DBDFA}" | ||||||
| EndProject | EndProject | ||||||
|  | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Filtration.ItemFilterPreview", "Filtration.ItemFilterPreview\Filtration.ItemFilterPreview.csproj", "{3AB98B6E-05DB-44FA-9DAD-584AA88F0739}" | ||||||
|  | EndProject | ||||||
|  | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Filtration.ItemFilterPreview.Tests", "Filtration.ItemFilterPreview.Tests\Filtration.ItemFilterPreview.Tests.csproj", "{58CD3B9C-EBBA-4527-A81C-78B7EA9CA298}" | ||||||
|  | EndProject | ||||||
| Global | Global | ||||||
| 	GlobalSection(Performance) = preSolution |  | ||||||
| 		HasPerformanceSessions = true |  | ||||||
| 	EndGlobalSection |  | ||||||
| 	GlobalSection(SolutionConfigurationPlatforms) = preSolution | 	GlobalSection(SolutionConfigurationPlatforms) = preSolution | ||||||
| 		Debug|Any CPU = Debug|Any CPU | 		Debug|Any CPU = Debug|Any CPU | ||||||
|  | 		Debug|ARM = Debug|ARM | ||||||
|  | 		Debug|x64 = Debug|x64 | ||||||
|  | 		Debug|x86 = Debug|x86 | ||||||
| 		Release|Any CPU = Release|Any CPU | 		Release|Any CPU = Release|Any CPU | ||||||
|  | 		Release|ARM = Release|ARM | ||||||
|  | 		Release|x64 = Release|x64 | ||||||
|  | 		Release|x86 = Release|x86 | ||||||
| 	EndGlobalSection | 	EndGlobalSection | ||||||
| 	GlobalSection(ProjectConfigurationPlatforms) = postSolution | 	GlobalSection(ProjectConfigurationPlatforms) = postSolution | ||||||
| 		{55E0A34C-E039-43D7-A024-A4045401CDDA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU | 		{55E0A34C-E039-43D7-A024-A4045401CDDA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU | ||||||
| 		{55E0A34C-E039-43D7-A024-A4045401CDDA}.Debug|Any CPU.Build.0 = Debug|Any CPU | 		{55E0A34C-E039-43D7-A024-A4045401CDDA}.Debug|Any CPU.Build.0 = Debug|Any CPU | ||||||
|  | 		{55E0A34C-E039-43D7-A024-A4045401CDDA}.Debug|ARM.ActiveCfg = Debug|Any CPU | ||||||
|  | 		{55E0A34C-E039-43D7-A024-A4045401CDDA}.Debug|ARM.Build.0 = Debug|Any CPU | ||||||
|  | 		{55E0A34C-E039-43D7-A024-A4045401CDDA}.Debug|x64.ActiveCfg = Debug|Any CPU | ||||||
|  | 		{55E0A34C-E039-43D7-A024-A4045401CDDA}.Debug|x64.Build.0 = Debug|Any CPU | ||||||
|  | 		{55E0A34C-E039-43D7-A024-A4045401CDDA}.Debug|x86.ActiveCfg = Debug|Any CPU | ||||||
|  | 		{55E0A34C-E039-43D7-A024-A4045401CDDA}.Debug|x86.Build.0 = Debug|Any CPU | ||||||
| 		{55E0A34C-E039-43D7-A024-A4045401CDDA}.Release|Any CPU.ActiveCfg = Release|Any CPU | 		{55E0A34C-E039-43D7-A024-A4045401CDDA}.Release|Any CPU.ActiveCfg = Release|Any CPU | ||||||
| 		{55E0A34C-E039-43D7-A024-A4045401CDDA}.Release|Any CPU.Build.0 = Release|Any CPU | 		{55E0A34C-E039-43D7-A024-A4045401CDDA}.Release|Any CPU.Build.0 = Release|Any CPU | ||||||
|  | 		{55E0A34C-E039-43D7-A024-A4045401CDDA}.Release|ARM.ActiveCfg = Release|Any CPU | ||||||
|  | 		{55E0A34C-E039-43D7-A024-A4045401CDDA}.Release|ARM.Build.0 = Release|Any CPU | ||||||
|  | 		{55E0A34C-E039-43D7-A024-A4045401CDDA}.Release|x64.ActiveCfg = Release|Any CPU | ||||||
|  | 		{55E0A34C-E039-43D7-A024-A4045401CDDA}.Release|x64.Build.0 = Release|Any CPU | ||||||
|  | 		{55E0A34C-E039-43D7-A024-A4045401CDDA}.Release|x86.ActiveCfg = Release|Any CPU | ||||||
|  | 		{55E0A34C-E039-43D7-A024-A4045401CDDA}.Release|x86.Build.0 = Release|Any CPU | ||||||
| 		{E0693972-72C5-4E05-A9C5-A5943E4015C6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU | 		{E0693972-72C5-4E05-A9C5-A5943E4015C6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU | ||||||
| 		{E0693972-72C5-4E05-A9C5-A5943E4015C6}.Debug|Any CPU.Build.0 = Debug|Any CPU | 		{E0693972-72C5-4E05-A9C5-A5943E4015C6}.Debug|Any CPU.Build.0 = Debug|Any CPU | ||||||
|  | 		{E0693972-72C5-4E05-A9C5-A5943E4015C6}.Debug|ARM.ActiveCfg = Debug|Any CPU | ||||||
|  | 		{E0693972-72C5-4E05-A9C5-A5943E4015C6}.Debug|ARM.Build.0 = Debug|Any CPU | ||||||
|  | 		{E0693972-72C5-4E05-A9C5-A5943E4015C6}.Debug|x64.ActiveCfg = Debug|Any CPU | ||||||
|  | 		{E0693972-72C5-4E05-A9C5-A5943E4015C6}.Debug|x64.Build.0 = Debug|Any CPU | ||||||
|  | 		{E0693972-72C5-4E05-A9C5-A5943E4015C6}.Debug|x86.ActiveCfg = Debug|Any CPU | ||||||
|  | 		{E0693972-72C5-4E05-A9C5-A5943E4015C6}.Debug|x86.Build.0 = Debug|Any CPU | ||||||
| 		{E0693972-72C5-4E05-A9C5-A5943E4015C6}.Release|Any CPU.ActiveCfg = Release|Any CPU | 		{E0693972-72C5-4E05-A9C5-A5943E4015C6}.Release|Any CPU.ActiveCfg = Release|Any CPU | ||||||
| 		{E0693972-72C5-4E05-A9C5-A5943E4015C6}.Release|Any CPU.Build.0 = Release|Any CPU | 		{E0693972-72C5-4E05-A9C5-A5943E4015C6}.Release|Any CPU.Build.0 = Release|Any CPU | ||||||
|  | 		{E0693972-72C5-4E05-A9C5-A5943E4015C6}.Release|ARM.ActiveCfg = Release|Any CPU | ||||||
|  | 		{E0693972-72C5-4E05-A9C5-A5943E4015C6}.Release|ARM.Build.0 = Release|Any CPU | ||||||
|  | 		{E0693972-72C5-4E05-A9C5-A5943E4015C6}.Release|x64.ActiveCfg = Release|Any CPU | ||||||
|  | 		{E0693972-72C5-4E05-A9C5-A5943E4015C6}.Release|x64.Build.0 = Release|Any CPU | ||||||
|  | 		{E0693972-72C5-4E05-A9C5-A5943E4015C6}.Release|x86.ActiveCfg = Release|Any CPU | ||||||
|  | 		{E0693972-72C5-4E05-A9C5-A5943E4015C6}.Release|x86.Build.0 = Release|Any CPU | ||||||
| 		{4AAC3BEB-1DC1-483E-9D11-0E9334E80227}.Debug|Any CPU.ActiveCfg = Debug|Any CPU | 		{4AAC3BEB-1DC1-483E-9D11-0E9334E80227}.Debug|Any CPU.ActiveCfg = Debug|Any CPU | ||||||
| 		{4AAC3BEB-1DC1-483E-9D11-0E9334E80227}.Debug|Any CPU.Build.0 = Debug|Any CPU | 		{4AAC3BEB-1DC1-483E-9D11-0E9334E80227}.Debug|Any CPU.Build.0 = Debug|Any CPU | ||||||
|  | 		{4AAC3BEB-1DC1-483E-9D11-0E9334E80227}.Debug|ARM.ActiveCfg = Debug|Any CPU | ||||||
|  | 		{4AAC3BEB-1DC1-483E-9D11-0E9334E80227}.Debug|ARM.Build.0 = Debug|Any CPU | ||||||
|  | 		{4AAC3BEB-1DC1-483E-9D11-0E9334E80227}.Debug|x64.ActiveCfg = Debug|Any CPU | ||||||
|  | 		{4AAC3BEB-1DC1-483E-9D11-0E9334E80227}.Debug|x64.Build.0 = Debug|Any CPU | ||||||
|  | 		{4AAC3BEB-1DC1-483E-9D11-0E9334E80227}.Debug|x86.ActiveCfg = Debug|Any CPU | ||||||
|  | 		{4AAC3BEB-1DC1-483E-9D11-0E9334E80227}.Debug|x86.Build.0 = Debug|Any CPU | ||||||
| 		{4AAC3BEB-1DC1-483E-9D11-0E9334E80227}.Release|Any CPU.ActiveCfg = Release|Any CPU | 		{4AAC3BEB-1DC1-483E-9D11-0E9334E80227}.Release|Any CPU.ActiveCfg = Release|Any CPU | ||||||
| 		{4AAC3BEB-1DC1-483E-9D11-0E9334E80227}.Release|Any CPU.Build.0 = Release|Any CPU | 		{4AAC3BEB-1DC1-483E-9D11-0E9334E80227}.Release|Any CPU.Build.0 = Release|Any CPU | ||||||
|  | 		{4AAC3BEB-1DC1-483E-9D11-0E9334E80227}.Release|ARM.ActiveCfg = Release|Any CPU | ||||||
|  | 		{4AAC3BEB-1DC1-483E-9D11-0E9334E80227}.Release|ARM.Build.0 = Release|Any CPU | ||||||
|  | 		{4AAC3BEB-1DC1-483E-9D11-0E9334E80227}.Release|x64.ActiveCfg = Release|Any CPU | ||||||
|  | 		{4AAC3BEB-1DC1-483E-9D11-0E9334E80227}.Release|x64.Build.0 = Release|Any CPU | ||||||
|  | 		{4AAC3BEB-1DC1-483E-9D11-0E9334E80227}.Release|x86.ActiveCfg = Release|Any CPU | ||||||
|  | 		{4AAC3BEB-1DC1-483E-9D11-0E9334E80227}.Release|x86.Build.0 = Release|Any CPU | ||||||
| 		{537BE676-2FF6-4995-B05B-9CFACE852EC9}.Debug|Any CPU.ActiveCfg = Debug|Any CPU | 		{537BE676-2FF6-4995-B05B-9CFACE852EC9}.Debug|Any CPU.ActiveCfg = Debug|Any CPU | ||||||
| 		{537BE676-2FF6-4995-B05B-9CFACE852EC9}.Debug|Any CPU.Build.0 = Debug|Any CPU | 		{537BE676-2FF6-4995-B05B-9CFACE852EC9}.Debug|Any CPU.Build.0 = Debug|Any CPU | ||||||
|  | 		{537BE676-2FF6-4995-B05B-9CFACE852EC9}.Debug|ARM.ActiveCfg = Debug|Any CPU | ||||||
|  | 		{537BE676-2FF6-4995-B05B-9CFACE852EC9}.Debug|ARM.Build.0 = Debug|Any CPU | ||||||
|  | 		{537BE676-2FF6-4995-B05B-9CFACE852EC9}.Debug|x64.ActiveCfg = Debug|Any CPU | ||||||
|  | 		{537BE676-2FF6-4995-B05B-9CFACE852EC9}.Debug|x64.Build.0 = Debug|Any CPU | ||||||
|  | 		{537BE676-2FF6-4995-B05B-9CFACE852EC9}.Debug|x86.ActiveCfg = Debug|Any CPU | ||||||
|  | 		{537BE676-2FF6-4995-B05B-9CFACE852EC9}.Debug|x86.Build.0 = Debug|Any CPU | ||||||
| 		{537BE676-2FF6-4995-B05B-9CFACE852EC9}.Release|Any CPU.ActiveCfg = Release|Any CPU | 		{537BE676-2FF6-4995-B05B-9CFACE852EC9}.Release|Any CPU.ActiveCfg = Release|Any CPU | ||||||
| 		{537BE676-2FF6-4995-B05B-9CFACE852EC9}.Release|Any CPU.Build.0 = Release|Any CPU | 		{537BE676-2FF6-4995-B05B-9CFACE852EC9}.Release|Any CPU.Build.0 = Release|Any CPU | ||||||
|  | 		{537BE676-2FF6-4995-B05B-9CFACE852EC9}.Release|ARM.ActiveCfg = Release|Any CPU | ||||||
|  | 		{537BE676-2FF6-4995-B05B-9CFACE852EC9}.Release|ARM.Build.0 = Release|Any CPU | ||||||
|  | 		{537BE676-2FF6-4995-B05B-9CFACE852EC9}.Release|x64.ActiveCfg = Release|Any CPU | ||||||
|  | 		{537BE676-2FF6-4995-B05B-9CFACE852EC9}.Release|x64.Build.0 = Release|Any CPU | ||||||
|  | 		{537BE676-2FF6-4995-B05B-9CFACE852EC9}.Release|x86.ActiveCfg = Release|Any CPU | ||||||
|  | 		{537BE676-2FF6-4995-B05B-9CFACE852EC9}.Release|x86.Build.0 = Release|Any CPU | ||||||
| 		{41B8F5C2-65AA-42F0-A20B-6F95B13A9F48}.Debug|Any CPU.ActiveCfg = Debug|Any CPU | 		{41B8F5C2-65AA-42F0-A20B-6F95B13A9F48}.Debug|Any CPU.ActiveCfg = Debug|Any CPU | ||||||
| 		{41B8F5C2-65AA-42F0-A20B-6F95B13A9F48}.Debug|Any CPU.Build.0 = Debug|Any CPU | 		{41B8F5C2-65AA-42F0-A20B-6F95B13A9F48}.Debug|Any CPU.Build.0 = Debug|Any CPU | ||||||
|  | 		{41B8F5C2-65AA-42F0-A20B-6F95B13A9F48}.Debug|ARM.ActiveCfg = Debug|Any CPU | ||||||
|  | 		{41B8F5C2-65AA-42F0-A20B-6F95B13A9F48}.Debug|ARM.Build.0 = Debug|Any CPU | ||||||
|  | 		{41B8F5C2-65AA-42F0-A20B-6F95B13A9F48}.Debug|x64.ActiveCfg = Debug|Any CPU | ||||||
|  | 		{41B8F5C2-65AA-42F0-A20B-6F95B13A9F48}.Debug|x64.Build.0 = Debug|Any CPU | ||||||
|  | 		{41B8F5C2-65AA-42F0-A20B-6F95B13A9F48}.Debug|x86.ActiveCfg = Debug|Any CPU | ||||||
|  | 		{41B8F5C2-65AA-42F0-A20B-6F95B13A9F48}.Debug|x86.Build.0 = Debug|Any CPU | ||||||
| 		{41B8F5C2-65AA-42F0-A20B-6F95B13A9F48}.Release|Any CPU.ActiveCfg = Release|Any CPU | 		{41B8F5C2-65AA-42F0-A20B-6F95B13A9F48}.Release|Any CPU.ActiveCfg = Release|Any CPU | ||||||
| 		{41B8F5C2-65AA-42F0-A20B-6F95B13A9F48}.Release|Any CPU.Build.0 = Release|Any CPU | 		{41B8F5C2-65AA-42F0-A20B-6F95B13A9F48}.Release|Any CPU.Build.0 = Release|Any CPU | ||||||
|  | 		{41B8F5C2-65AA-42F0-A20B-6F95B13A9F48}.Release|ARM.ActiveCfg = Release|Any CPU | ||||||
|  | 		{41B8F5C2-65AA-42F0-A20B-6F95B13A9F48}.Release|ARM.Build.0 = Release|Any CPU | ||||||
|  | 		{41B8F5C2-65AA-42F0-A20B-6F95B13A9F48}.Release|x64.ActiveCfg = Release|Any CPU | ||||||
|  | 		{41B8F5C2-65AA-42F0-A20B-6F95B13A9F48}.Release|x64.Build.0 = Release|Any CPU | ||||||
|  | 		{41B8F5C2-65AA-42F0-A20B-6F95B13A9F48}.Release|x86.ActiveCfg = Release|Any CPU | ||||||
|  | 		{41B8F5C2-65AA-42F0-A20B-6F95B13A9F48}.Release|x86.Build.0 = Release|Any CPU | ||||||
| 		{450AC313-BF25-4BFD-A066-9F39F026FDCF}.Debug|Any CPU.ActiveCfg = Debug|Any CPU | 		{450AC313-BF25-4BFD-A066-9F39F026FDCF}.Debug|Any CPU.ActiveCfg = Debug|Any CPU | ||||||
| 		{450AC313-BF25-4BFD-A066-9F39F026FDCF}.Debug|Any CPU.Build.0 = Debug|Any CPU | 		{450AC313-BF25-4BFD-A066-9F39F026FDCF}.Debug|Any CPU.Build.0 = Debug|Any CPU | ||||||
|  | 		{450AC313-BF25-4BFD-A066-9F39F026FDCF}.Debug|ARM.ActiveCfg = Debug|Any CPU | ||||||
|  | 		{450AC313-BF25-4BFD-A066-9F39F026FDCF}.Debug|ARM.Build.0 = Debug|Any CPU | ||||||
|  | 		{450AC313-BF25-4BFD-A066-9F39F026FDCF}.Debug|x64.ActiveCfg = Debug|Any CPU | ||||||
|  | 		{450AC313-BF25-4BFD-A066-9F39F026FDCF}.Debug|x64.Build.0 = Debug|Any CPU | ||||||
|  | 		{450AC313-BF25-4BFD-A066-9F39F026FDCF}.Debug|x86.ActiveCfg = Debug|Any CPU | ||||||
|  | 		{450AC313-BF25-4BFD-A066-9F39F026FDCF}.Debug|x86.Build.0 = Debug|Any CPU | ||||||
| 		{450AC313-BF25-4BFD-A066-9F39F026FDCF}.Release|Any CPU.ActiveCfg = Release|Any CPU | 		{450AC313-BF25-4BFD-A066-9F39F026FDCF}.Release|Any CPU.ActiveCfg = Release|Any CPU | ||||||
| 		{450AC313-BF25-4BFD-A066-9F39F026FDCF}.Release|Any CPU.Build.0 = Release|Any CPU | 		{450AC313-BF25-4BFD-A066-9F39F026FDCF}.Release|Any CPU.Build.0 = Release|Any CPU | ||||||
|  | 		{450AC313-BF25-4BFD-A066-9F39F026FDCF}.Release|ARM.ActiveCfg = Release|Any CPU | ||||||
|  | 		{450AC313-BF25-4BFD-A066-9F39F026FDCF}.Release|ARM.Build.0 = Release|Any CPU | ||||||
|  | 		{450AC313-BF25-4BFD-A066-9F39F026FDCF}.Release|x64.ActiveCfg = Release|Any CPU | ||||||
|  | 		{450AC313-BF25-4BFD-A066-9F39F026FDCF}.Release|x64.Build.0 = Release|Any CPU | ||||||
|  | 		{450AC313-BF25-4BFD-A066-9F39F026FDCF}.Release|x86.ActiveCfg = Release|Any CPU | ||||||
|  | 		{450AC313-BF25-4BFD-A066-9F39F026FDCF}.Release|x86.Build.0 = Release|Any CPU | ||||||
| 		{0F333344-7695-47B2-B0E6-172E4DE74819}.Debug|Any CPU.ActiveCfg = Debug|Any CPU | 		{0F333344-7695-47B2-B0E6-172E4DE74819}.Debug|Any CPU.ActiveCfg = Debug|Any CPU | ||||||
| 		{0F333344-7695-47B2-B0E6-172E4DE74819}.Debug|Any CPU.Build.0 = Debug|Any CPU | 		{0F333344-7695-47B2-B0E6-172E4DE74819}.Debug|Any CPU.Build.0 = Debug|Any CPU | ||||||
|  | 		{0F333344-7695-47B2-B0E6-172E4DE74819}.Debug|ARM.ActiveCfg = Debug|Any CPU | ||||||
|  | 		{0F333344-7695-47B2-B0E6-172E4DE74819}.Debug|ARM.Build.0 = Debug|Any CPU | ||||||
|  | 		{0F333344-7695-47B2-B0E6-172E4DE74819}.Debug|x64.ActiveCfg = Debug|Any CPU | ||||||
|  | 		{0F333344-7695-47B2-B0E6-172E4DE74819}.Debug|x64.Build.0 = Debug|Any CPU | ||||||
|  | 		{0F333344-7695-47B2-B0E6-172E4DE74819}.Debug|x86.ActiveCfg = Debug|Any CPU | ||||||
|  | 		{0F333344-7695-47B2-B0E6-172E4DE74819}.Debug|x86.Build.0 = Debug|Any CPU | ||||||
| 		{0F333344-7695-47B2-B0E6-172E4DE74819}.Release|Any CPU.ActiveCfg = Release|Any CPU | 		{0F333344-7695-47B2-B0E6-172E4DE74819}.Release|Any CPU.ActiveCfg = Release|Any CPU | ||||||
| 		{0F333344-7695-47B2-B0E6-172E4DE74819}.Release|Any CPU.Build.0 = Release|Any CPU | 		{0F333344-7695-47B2-B0E6-172E4DE74819}.Release|Any CPU.Build.0 = Release|Any CPU | ||||||
|  | 		{0F333344-7695-47B2-B0E6-172E4DE74819}.Release|ARM.ActiveCfg = Release|Any CPU | ||||||
|  | 		{0F333344-7695-47B2-B0E6-172E4DE74819}.Release|ARM.Build.0 = Release|Any CPU | ||||||
|  | 		{0F333344-7695-47B2-B0E6-172E4DE74819}.Release|x64.ActiveCfg = Release|Any CPU | ||||||
|  | 		{0F333344-7695-47B2-B0E6-172E4DE74819}.Release|x64.Build.0 = Release|Any CPU | ||||||
|  | 		{0F333344-7695-47B2-B0E6-172E4DE74819}.Release|x86.ActiveCfg = Release|Any CPU | ||||||
|  | 		{0F333344-7695-47B2-B0E6-172E4DE74819}.Release|x86.Build.0 = Release|Any CPU | ||||||
| 		{8CB44F28-2956-4C2A-9314-72727262EDD4}.Debug|Any CPU.ActiveCfg = Debug|Any CPU | 		{8CB44F28-2956-4C2A-9314-72727262EDD4}.Debug|Any CPU.ActiveCfg = Debug|Any CPU | ||||||
| 		{8CB44F28-2956-4C2A-9314-72727262EDD4}.Debug|Any CPU.Build.0 = Debug|Any CPU | 		{8CB44F28-2956-4C2A-9314-72727262EDD4}.Debug|Any CPU.Build.0 = Debug|Any CPU | ||||||
|  | 		{8CB44F28-2956-4C2A-9314-72727262EDD4}.Debug|ARM.ActiveCfg = Debug|Any CPU | ||||||
|  | 		{8CB44F28-2956-4C2A-9314-72727262EDD4}.Debug|ARM.Build.0 = Debug|Any CPU | ||||||
|  | 		{8CB44F28-2956-4C2A-9314-72727262EDD4}.Debug|x64.ActiveCfg = Debug|Any CPU | ||||||
|  | 		{8CB44F28-2956-4C2A-9314-72727262EDD4}.Debug|x64.Build.0 = Debug|Any CPU | ||||||
|  | 		{8CB44F28-2956-4C2A-9314-72727262EDD4}.Debug|x86.ActiveCfg = Debug|Any CPU | ||||||
|  | 		{8CB44F28-2956-4C2A-9314-72727262EDD4}.Debug|x86.Build.0 = Debug|Any CPU | ||||||
| 		{8CB44F28-2956-4C2A-9314-72727262EDD4}.Release|Any CPU.ActiveCfg = Release|Any CPU | 		{8CB44F28-2956-4C2A-9314-72727262EDD4}.Release|Any CPU.ActiveCfg = Release|Any CPU | ||||||
| 		{8CB44F28-2956-4C2A-9314-72727262EDD4}.Release|Any CPU.Build.0 = Release|Any CPU | 		{8CB44F28-2956-4C2A-9314-72727262EDD4}.Release|Any CPU.Build.0 = Release|Any CPU | ||||||
|  | 		{8CB44F28-2956-4C2A-9314-72727262EDD4}.Release|ARM.ActiveCfg = Release|Any CPU | ||||||
|  | 		{8CB44F28-2956-4C2A-9314-72727262EDD4}.Release|ARM.Build.0 = Release|Any CPU | ||||||
|  | 		{8CB44F28-2956-4C2A-9314-72727262EDD4}.Release|x64.ActiveCfg = Release|Any CPU | ||||||
|  | 		{8CB44F28-2956-4C2A-9314-72727262EDD4}.Release|x64.Build.0 = Release|Any CPU | ||||||
|  | 		{8CB44F28-2956-4C2A-9314-72727262EDD4}.Release|x86.ActiveCfg = Release|Any CPU | ||||||
|  | 		{8CB44F28-2956-4C2A-9314-72727262EDD4}.Release|x86.Build.0 = Release|Any CPU | ||||||
| 		{1E42A658-45C4-4DD9-83C5-2A10728DBDFA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU | 		{1E42A658-45C4-4DD9-83C5-2A10728DBDFA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU | ||||||
| 		{1E42A658-45C4-4DD9-83C5-2A10728DBDFA}.Debug|Any CPU.Build.0 = Debug|Any CPU | 		{1E42A658-45C4-4DD9-83C5-2A10728DBDFA}.Debug|Any CPU.Build.0 = Debug|Any CPU | ||||||
|  | 		{1E42A658-45C4-4DD9-83C5-2A10728DBDFA}.Debug|ARM.ActiveCfg = Debug|Any CPU | ||||||
|  | 		{1E42A658-45C4-4DD9-83C5-2A10728DBDFA}.Debug|ARM.Build.0 = Debug|Any CPU | ||||||
|  | 		{1E42A658-45C4-4DD9-83C5-2A10728DBDFA}.Debug|x64.ActiveCfg = Debug|Any CPU | ||||||
|  | 		{1E42A658-45C4-4DD9-83C5-2A10728DBDFA}.Debug|x64.Build.0 = Debug|Any CPU | ||||||
|  | 		{1E42A658-45C4-4DD9-83C5-2A10728DBDFA}.Debug|x86.ActiveCfg = Debug|Any CPU | ||||||
|  | 		{1E42A658-45C4-4DD9-83C5-2A10728DBDFA}.Debug|x86.Build.0 = Debug|Any CPU | ||||||
| 		{1E42A658-45C4-4DD9-83C5-2A10728DBDFA}.Release|Any CPU.ActiveCfg = Release|Any CPU | 		{1E42A658-45C4-4DD9-83C5-2A10728DBDFA}.Release|Any CPU.ActiveCfg = Release|Any CPU | ||||||
| 		{1E42A658-45C4-4DD9-83C5-2A10728DBDFA}.Release|Any CPU.Build.0 = Release|Any CPU | 		{1E42A658-45C4-4DD9-83C5-2A10728DBDFA}.Release|Any CPU.Build.0 = Release|Any CPU | ||||||
|  | 		{1E42A658-45C4-4DD9-83C5-2A10728DBDFA}.Release|ARM.ActiveCfg = Release|Any CPU | ||||||
|  | 		{1E42A658-45C4-4DD9-83C5-2A10728DBDFA}.Release|ARM.Build.0 = Release|Any CPU | ||||||
|  | 		{1E42A658-45C4-4DD9-83C5-2A10728DBDFA}.Release|x64.ActiveCfg = Release|Any CPU | ||||||
|  | 		{1E42A658-45C4-4DD9-83C5-2A10728DBDFA}.Release|x64.Build.0 = Release|Any CPU | ||||||
|  | 		{1E42A658-45C4-4DD9-83C5-2A10728DBDFA}.Release|x86.ActiveCfg = Release|Any CPU | ||||||
|  | 		{1E42A658-45C4-4DD9-83C5-2A10728DBDFA}.Release|x86.Build.0 = Release|Any CPU | ||||||
|  | 		{3AB98B6E-05DB-44FA-9DAD-584AA88F0739}.Debug|Any CPU.ActiveCfg = Debug|Any CPU | ||||||
|  | 		{3AB98B6E-05DB-44FA-9DAD-584AA88F0739}.Debug|Any CPU.Build.0 = Debug|Any CPU | ||||||
|  | 		{3AB98B6E-05DB-44FA-9DAD-584AA88F0739}.Debug|ARM.ActiveCfg = Debug|Any CPU | ||||||
|  | 		{3AB98B6E-05DB-44FA-9DAD-584AA88F0739}.Debug|ARM.Build.0 = Debug|Any CPU | ||||||
|  | 		{3AB98B6E-05DB-44FA-9DAD-584AA88F0739}.Debug|x64.ActiveCfg = Debug|Any CPU | ||||||
|  | 		{3AB98B6E-05DB-44FA-9DAD-584AA88F0739}.Debug|x64.Build.0 = Debug|Any CPU | ||||||
|  | 		{3AB98B6E-05DB-44FA-9DAD-584AA88F0739}.Debug|x86.ActiveCfg = Debug|Any CPU | ||||||
|  | 		{3AB98B6E-05DB-44FA-9DAD-584AA88F0739}.Debug|x86.Build.0 = Debug|Any CPU | ||||||
|  | 		{3AB98B6E-05DB-44FA-9DAD-584AA88F0739}.Release|Any CPU.ActiveCfg = Release|Any CPU | ||||||
|  | 		{3AB98B6E-05DB-44FA-9DAD-584AA88F0739}.Release|Any CPU.Build.0 = Release|Any CPU | ||||||
|  | 		{3AB98B6E-05DB-44FA-9DAD-584AA88F0739}.Release|ARM.ActiveCfg = Release|Any CPU | ||||||
|  | 		{3AB98B6E-05DB-44FA-9DAD-584AA88F0739}.Release|ARM.Build.0 = Release|Any CPU | ||||||
|  | 		{3AB98B6E-05DB-44FA-9DAD-584AA88F0739}.Release|x64.ActiveCfg = Release|Any CPU | ||||||
|  | 		{3AB98B6E-05DB-44FA-9DAD-584AA88F0739}.Release|x64.Build.0 = Release|Any CPU | ||||||
|  | 		{3AB98B6E-05DB-44FA-9DAD-584AA88F0739}.Release|x86.ActiveCfg = Release|Any CPU | ||||||
|  | 		{3AB98B6E-05DB-44FA-9DAD-584AA88F0739}.Release|x86.Build.0 = Release|Any CPU | ||||||
|  | 		{58CD3B9C-EBBA-4527-A81C-78B7EA9CA298}.Debug|Any CPU.ActiveCfg = Debug|Any CPU | ||||||
|  | 		{58CD3B9C-EBBA-4527-A81C-78B7EA9CA298}.Debug|Any CPU.Build.0 = Debug|Any CPU | ||||||
|  | 		{58CD3B9C-EBBA-4527-A81C-78B7EA9CA298}.Debug|ARM.ActiveCfg = Debug|Any CPU | ||||||
|  | 		{58CD3B9C-EBBA-4527-A81C-78B7EA9CA298}.Debug|ARM.Build.0 = Debug|Any CPU | ||||||
|  | 		{58CD3B9C-EBBA-4527-A81C-78B7EA9CA298}.Debug|x64.ActiveCfg = Debug|Any CPU | ||||||
|  | 		{58CD3B9C-EBBA-4527-A81C-78B7EA9CA298}.Debug|x64.Build.0 = Debug|Any CPU | ||||||
|  | 		{58CD3B9C-EBBA-4527-A81C-78B7EA9CA298}.Debug|x86.ActiveCfg = Debug|Any CPU | ||||||
|  | 		{58CD3B9C-EBBA-4527-A81C-78B7EA9CA298}.Debug|x86.Build.0 = Debug|Any CPU | ||||||
|  | 		{58CD3B9C-EBBA-4527-A81C-78B7EA9CA298}.Release|Any CPU.ActiveCfg = Release|Any CPU | ||||||
|  | 		{58CD3B9C-EBBA-4527-A81C-78B7EA9CA298}.Release|Any CPU.Build.0 = Release|Any CPU | ||||||
|  | 		{58CD3B9C-EBBA-4527-A81C-78B7EA9CA298}.Release|ARM.ActiveCfg = Release|Any CPU | ||||||
|  | 		{58CD3B9C-EBBA-4527-A81C-78B7EA9CA298}.Release|ARM.Build.0 = Release|Any CPU | ||||||
|  | 		{58CD3B9C-EBBA-4527-A81C-78B7EA9CA298}.Release|x64.ActiveCfg = Release|Any CPU | ||||||
|  | 		{58CD3B9C-EBBA-4527-A81C-78B7EA9CA298}.Release|x64.Build.0 = Release|Any CPU | ||||||
|  | 		{58CD3B9C-EBBA-4527-A81C-78B7EA9CA298}.Release|x86.ActiveCfg = Release|Any CPU | ||||||
|  | 		{58CD3B9C-EBBA-4527-A81C-78B7EA9CA298}.Release|x86.Build.0 = Release|Any CPU | ||||||
| 	EndGlobalSection | 	EndGlobalSection | ||||||
| 	GlobalSection(SolutionProperties) = preSolution | 	GlobalSection(SolutionProperties) = preSolution | ||||||
| 		HideSolutionNode = FALSE | 		HideSolutionNode = FALSE | ||||||
|  | |||||||
| @ -254,7 +254,7 @@ namespace Filtration.Translators | |||||||
| 
 | 
 | ||||||
|         private static void SetNumericFilterPredicateFromString(NumericFilterPredicate predicate, string inputString) |         private static void SetNumericFilterPredicateFromString(NumericFilterPredicate predicate, string inputString) | ||||||
|         { |         { | ||||||
|             var result = Regex.Match(inputString, @"^\w+\s+([><!=]{0,2})\s*(\d{0,3})$"); |             var result = Regex.Match(inputString, @"^\w+\s+([><=]{0,2})\s*(\d{0,3})$"); | ||||||
|             if (result.Groups.Count != 3) return; |             if (result.Groups.Count != 3) return; | ||||||
| 
 | 
 | ||||||
|             predicate.PredicateOperator = |             predicate.PredicateOperator = | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user