public void MapSourceToDestination_NonGenericMetod_AllOk() { var mapper = new Mapper(); mapper.CreateConfiguration <MockSource, MockDestination>() .AddMap(s => s.GuidProp, d => d.GuidProp) .AddMap(s => s.StringProp, d => d.StringProp) .AddMap(s => s.IntProp, d => d.IntProp) .AddMap(s => s.DateTimeProp, d => d.DateTimeProp) .AddMap(s => s.DoubleProp, d => d.DoubleProp); var source = new MockSource() { GuidProp = Guid.NewGuid(), StringProp = "anyString", IntProp = 1234, DateTimeProp = DateTime.Now, DoubleProp = 123.456 }; var result = (MockDestination)mapper.Map(typeof(MockSource), typeof(MockDestination), source); Assert.AreEqual(source.GuidProp, result.GuidProp, "GuidProp error."); Assert.AreEqual(source.StringProp, result.StringProp, "StringProp error."); Assert.AreEqual(source.IntProp, result.IntProp, "IntProp error."); Assert.AreEqual(source.DateTimeProp, result.DateTimeProp, "DateTimeProp error."); Assert.AreEqual(source.DoubleProp, result.DoubleProp, "DoubleProp error."); }
public void Results_LinkHasSizes_UseSizes() { var uri = new Uri("http://www.example.com"); var source = new MockSource(); source.AddTextResource(uri, @" <html><head> <link rel='icon' href='favicons.ico' sizes='16x16 32x32'> </head><body>Fake content.</body></html>"); var scanner = new DefaultScanner(source, uri); scanner.Start(); Assert.AreEqual(new ScanResult { Location = new Uri("http://www.example.com/favicons.ico"), ExpectedSize = new Size(16, 16) }, scanner.Results[0]); Assert.AreEqual(new ScanResult { Location = new Uri("http://www.example.com/favicons.ico"), ExpectedSize = new Size(32, 32) }, scanner.Results[1]); }
public void Serialize() { string expected = "Start " + "MockSource " + "IsValid True IsValid " + "IntNumber 42 IntNumber " + $"DoubleNumber {double.MaxValue.ToString(CultureInfo.InvariantCulture)} DoubleNumber " + $"LongNumber {long.MaxValue} LongNumber " + "Name Source Name " + "Items " + "Item Name i1 Name Item " + "Item Name i2 Name Item " + "Items " + "DoubleArray " + "Item 1 Item " + "Item 2 Item " + "DoubleArray " + "MockSource " + "End"; var source = new MockSource(); var writer = new MockXmlWriter(); IXmlSerializer serializer = XmlSerializer.GetBuilder(typeof(MockSource)).Build(); serializer.Serialize(writer, source); string actual = writer.ToString(); Assert.Equal(expected, actual); }
public void Scan_AllResources_FindAll() { var uri = new Uri("http://www.example.com"); var source = new MockSource(); source.AddTextResource(uri, @" <html><head> <meta rel='manifest' href='/manifest.json'> <meta name='msapplication-config' content='browserconfig.xml'> <link rel=icon href='favicon.png'> </head><body>Fake content.</body></html>"); source.AddTextResource(new Uri(uri, "/manifest.json"), @" {'icons': [ {'src': '/android-chrome-36x36.png', 'sizes': '36x36', 'type': 'image/png', 'density': 0.75}, {'src': '/android-chrome-48x48.png', 'sizes': '48x48', 'type': 'image/png', 'density': 1}, {'src': '/android-chrome-72x72.png', 'sizes': '72x72', 'type': 'image/png', 'density': 1.5}, {'src': '/android-chrome-96x96.png', 'sizes': '96x96', 'type': 'image/png', 'density': 2}, {'src': '/android-chrome-144x144.png', 'sizes': '144x144', 'type': 'image/png', 'density': 3}, {'src': '/android-chrome-192x192.png', 'sizes': '192x192', 'type': 'image/png', 'density': 4} ]}".Replace('\'', '"')); source.AddTextResource(new Uri(uri, "/browserconfig.xml"), @"<?xml version='1.0' encoding='utf-8'?> <browserconfig><msapplication><tile> <square70x70logo src='/mstile-70x70.png' /> <square150x150logo src='/mstile-150x150.png' /> <square310x310logo src='/mstile-310x310.png' /> <wide310x150logo src='/mstile-310x150.png' /> <TileColor>#29aaff</TileColor> </tile></msapplication></browserconfig>"); var scanner = new Scanner(source); var results = scanner.Scan(uri).ToArray(); Assert.AreEqual(12, results.Length); }
public void MapReferenceProperty_MapperIsNotImplemented() { var mapper = new Mapper(); mapper.CreateConfiguration <MockSource, MockDestination>() .AddMap(s => s.GuidProp, d => d.GuidProp) .AddMap(s => s.StringProp, d => d.StringProp) .AddMap(s => s.IntProp, d => d.IntProp) .AddMap(s => s.DateTimeProp, d => d.DateTimeProp) .AddMap(s => s.DoubleProp, d => d.DoubleProp) .AddMap(s => s.ReferenceProperty, d => d.ReferenceProperty); var source = new MockSource() { GuidProp = Guid.NewGuid(), StringProp = "anyString", IntProp = 1234, DateTimeProp = DateTime.Now, DoubleProp = 123.456, ReferenceProperty = new MockSource1() { GuidProp = Guid.NewGuid(), StringProp = "anyRefString", IntProp = 456 } }; var result = mapper.Map <MockSource, MockDestination>(source); }
public void Start_ContainsInvalidUri_Skip() { var uri = new Uri("http://www.example.com/browserconfig.xml"); var source = new MockSource(); source.AddTextResource(uri, @" <?xml version='1.0' encoding='utf-8'?> <browserconfig> <msapplication> <tile> <square70x70logo src='///invalid.png' /> <square150x150logo src='/mstile-150x150.png' /> <square310x310logo src='/mstile-310x310.png' /> <wide310x150logo src='/mstile-310x150.png' /> <TileColor>#29aaff</TileColor> </tile> </msapplication> </browserconfig>"); var scanner = new BrowserconfigXmlScanner(source, uri); scanner.Start(); Assert.AreEqual(3, scanner.Results.Count); }
public void MapSourceToDestination_NonGenericMetod_TSourceIsNotArrayDestinatiniIsArray() { var mapper = new Mapper(); mapper.CreateConfiguration <MockSource1, MockDestination1>() .AddMap(s => s.GuidProp, d => d.GuidProp) .AddMap(s => s.StringProp, d => d.StringProp) .AddMap(s => s.IntProp, d => d.IntProp); mapper.CreateConfiguration <MockSource, MockDestination>() .AddMap(s => s.GuidProp, d => d.GuidProp) .AddMap(s => s.StringProp, d => d.StringProp) .AddMap(s => s.IntProp, d => d.IntProp) .AddMap(s => s.DateTimeProp, d => d.DateTimeProp) .AddMap(s => s.DoubleProp, d => d.DoubleProp) .AddMap(s => s.ReferenceProperty, d => d.ReferenceProperty); var source1 = new MockSource() { GuidProp = Guid.NewGuid(), StringProp = "anyString", IntProp = 1234, DateTimeProp = DateTime.Now, DoubleProp = 123.456, ReferenceProperty = new MockSource1() { GuidProp = Guid.NewGuid(), StringProp = "anyRefString", IntProp = 456 } }; var source2 = new MockSource() { GuidProp = Guid.NewGuid(), StringProp = "anyString", IntProp = 1234, DateTimeProp = DateTime.Now, DoubleProp = 123.456, ReferenceProperty = new MockSource1() { GuidProp = Guid.NewGuid(), StringProp = "anyRefString", IntProp = 456 } }; var result = (IEnumerable)mapper.Map( typeof(MockSource), typeof(IEnumerable), (new List <MockSource>() { source1, source2 }).AsQueryable()); }
public void Fetcher_NoLinks_MakeTwoRequests() { var uri = new Uri("http://www.example.com"); var source = new MockSource(); source.AddTextResource(uri, "Fake content."); var fetcher = new Fetcher(source); fetcher.FetchClosest(uri, new Size(16, 16)); Assert.AreEqual(2, source.RequestCount); }
public void SuggestedScanners_NotFound_SuggestFaviconIco() { var uri = new Uri("http://www.example.com"); var source = new MockSource(); var scanner = new DefaultScanner(source, uri); scanner.Start(); Assert.AreEqual(0, scanner.Results.Count); Assert.AreEqual(1, scanner.SuggestedScanners.Count); Assert.IsInstanceOfType(scanner.SuggestedScanners[0], typeof(FaviconIcoScanner)); }
public void WithExcludedProperty() { var source = new MockSource(); var writer = new MockXmlWriter(); var excludedProperty = nameof(MockSource.IntNumber); IXmlSerializer serializer = XmlSerializer.GetBuilder(typeof(MockSource)) .WithExcludedProperty(excludedProperty) .Build(); serializer.Serialize(writer, source); string actual = writer.ToString(); Assert.DoesNotContain(excludedProperty, actual); }
public void Start_InvalidXml_Skip() { var uri = new Uri("http://www.example.com/browserconfig.xml"); var source = new MockSource(); source.AddTextResource(uri, @" <browserconfig>>"); var scanner = new BrowserconfigXmlScanner(source, uri); scanner.Start(); Assert.AreEqual(0, scanner.Results.Count); }
public void SuggestedScanners_HtmlEndsAtTag_SuggestFaviconIco() { var uri = new Uri("http://www.example.com"); var source = new MockSource(); source.AddTextResource(uri, "<html><head><link"); var scanner = new DefaultScanner(source, uri); scanner.Start(); Assert.AreEqual(0, scanner.Results.Count); Assert.AreEqual(1, scanner.SuggestedScanners.Count); Assert.IsInstanceOfType(scanner.SuggestedScanners[0], typeof(FaviconIcoScanner)); }
public void WithRootName() { var source = new MockSource(); var writer = new MockXmlWriter(); string rootName = "CustomRoot"; IXmlSerializer serializer = XmlSerializer.GetBuilder(typeof(MockSource)) .WithRootName(rootName) .Build(); serializer.Serialize(writer, source); string actual = writer.ToString(); Assert.Contains(rootName, actual); Assert.DoesNotContain(nameof(MockSource), actual); }
public void WithCollectionItemName() { var source = new MockSource(); var writer = new MockXmlWriter(); var itemName = "CustomItem"; IXmlSerializer serializer = XmlSerializer.GetBuilder(typeof(MockSource)) .WithCollectionItemName(nameof(MockSource.Items), itemName) .Build(); serializer.Serialize(writer, source); string actual = writer.ToString(); Assert.Contains(itemName, actual); Assert.DoesNotContain(nameof(XmlSerializer.DefaultItemName), actual); }
public void Results_LinkInBody_Ignored() { var uri = new Uri("http://www.example.com"); var source = new MockSource(); source.AddTextResource(uri, @" <html><body> <link rel=icon href='favicon.png'> </body></html>"); var scanner = new DefaultScanner(source, uri); scanner.Start(); Assert.AreEqual(0, scanner.Results.Count); }
public void MapperForPropertyMissingCast() { var mapper = new Mapper(); mapper.CreateConfiguration <MockSource, MockDestination>() .AddMap(s => s.GuidProp, d => d.GuidProp) .AddMap(s => s.IntProp, d => d.StringProp); var source = new MockSource() { GuidProp = Guid.NewGuid(), IntProp = 1234 }; var result = mapper.Map <MockSource, MockDestination>(source); }
public void Fetcher_NonexistentLink_MakeThreeRequests() { var uri = new Uri("http://www.example.com"); var source = new MockSource(); source.AddTextResource(uri, @" <html><head> <link rel='shortcut icon' href='nonexistent.png'> </head></html>"); var fetcher = new Fetcher(source); fetcher.FetchClosest(uri, new Size(16, 16)); Assert.AreEqual(3, source.RequestCount); }
public void Fetcher_MultipleIconsInFile_UseBest() { var uri = new Uri("http://www.example.com"); var source = new MockSource(); source.AddTextResource(uri, "Fake content."); source.AddImageResource(new Uri(uri, "/favicon.ico"), new Size(16, 16)); source.AddImageResource(new Uri(uri, "/favicon.ico"), new Size(32, 32)); source.AddImageResource(new Uri(uri, "/favicon.ico"), new Size(48, 48)); var fetcher = new Fetcher(source); var image = fetcher.FetchClosest(uri, new Size(32, 32)); Assert.AreEqual(2, source.RequestCount); Assert.AreEqual(new Size(32, 32), image.Size); }
public void Results_HtmlInCaps_ParseIt() { var uri = new Uri("http://www.example.com"); var source = new MockSource(); source.AddTextResource(uri, @" <HTML><HEAD> <link rel='SHORTCUT ICON' href='favicon.png'> </HEAD><BODY>Fake content.</BODY></HTML>"); var scanner = new DefaultScanner(source, uri); scanner.Start(); Assert.AreEqual(1, scanner.Results.Count); }
public void Results_MultipleLinks_FindAll() { var uri = new Uri("http://www.example.com"); var source = new MockSource(); source.AddTextResource(uri, @" <html><head> <link rel='icon' href='favicon1.png'> <link rel='icon' href='favicon2.png'> </head><body>Fake content.</body></html>"); var scanner = new DefaultScanner(source, uri); scanner.Start(); Assert.AreEqual(2, scanner.Results.Count); }
public void SuggestedScanners_ManifestJsonLinked_SuggestIt() { var uri = new Uri("http://www.example.com"); var source = new MockSource(); source.AddTextResource(uri, @" <html><head> <meta rel='manifest' href='/manifest.json'> </head></html>"); var scanner = new DefaultScanner(source, uri); scanner.Start(); Assert.AreEqual(0, scanner.Results.Count); Assert.AreEqual(2, scanner.SuggestedScanners.Count); // plus FaviconIcoScanner Assert.IsInstanceOfType(scanner.SuggestedScanners[0], typeof(ManifestJsonScanner)); }
public void MapSourceToDestination_NonGenericMetod_TDestIsNotImplementDefaulConstructor() { var mapper = new Mapper(); mapper.CreateConfiguration <MockSource, MockDestination1>() .AddMap(s => s.GuidProp, d => d.GuidProp) .AddMap(s => s.StringProp, d => d.StringProp) .AddMap(s => s.IntProp, d => d.IntProp); var source = new MockSource() { GuidProp = Guid.NewGuid(), StringProp = "anyString", IntProp = 1234 }; var result = (MockDestinationWithoutDefaultConstructor)mapper.Map(typeof(MockSource), typeof(MockDestinationWithoutDefaultConstructor), source); }
public void ShouldResolveCreatorFromScopedLocatorAndCreateInstance() { using (var scoped = Locator.Service.Get <ILocatorScopedFactory>().CreateScope()) { var creator = scoped.Get <IRenderingCreatorScoped>().GetCreator <MockSource>("test"); var sut = DotNetStarter.ApplicationContext.Default.Locator.Get(creator.GetType()) as Func <MockSource, MockRendering>; var t = new MockSource() { Id = 100, Name = "Test Soruce" }; Assert.IsNotNull(sut); var instance = sut(t); Assert.IsTrue(instance.Mock.Id == 100); } }
public void Start_ContainsInvalidUri_Skip() { var uri = new Uri("http://www.example.com/manifest.json"); var source = new MockSource(); source.AddTextResource(uri, @" {'name': 'Favicon', 'icons': [ {'src': '///invalid.png', 'sizes': '36x36'}, {'src': '/android-chrome-48x48.png', 'sizes': '48x48'} ]}".Replace('\'', '"')); var scanner = new ManifestJsonScanner(source, uri); scanner.Start(); Assert.AreEqual(1, scanner.Results.Count); }
public void SuggestedScanners_BrowserconfigXmlLinked_SuggestIt() { var uri = new Uri("http://www.example.com"); var source = new MockSource(); source.AddTextResource(uri, @" <html><head> <meta name='msapplication-config' content='browserconfig.xml'> </head></html>"); var scanner = new DefaultScanner(source, uri); scanner.Start(); Assert.AreEqual(0, scanner.Results.Count); Assert.AreEqual(2, scanner.SuggestedScanners.Count); // plus FaviconIcoScanner Assert.IsInstanceOfType(scanner.SuggestedScanners[0], typeof(BrowserconfigXmlScanner)); }
public void SuggestedScanners_InvalidBrowserconfigXmlUri_Skip() { var uri = new Uri("http://www.example.com"); var source = new MockSource(); source.AddTextResource(uri, @" <html><head> <meta name='msapplication-config' content='///browserconfig.xml'> <link rel=icon href='favicon.ico'> </head></html>"); var scanner = new DefaultScanner(source, uri); scanner.Start(); Assert.AreEqual(1, scanner.Results.Count); Assert.AreEqual(1, scanner.SuggestedScanners.Count); // just FaviconIcoScanner }
public void SuggestedScanners_InvalidManifestJsonUri_Skip() { var uri = new Uri("http://www.example.com"); var source = new MockSource(); source.AddTextResource(uri, @" <html><head> <meta rel='manifest' href='///manifest.json'> <link rel=icon href='favicon.ico'> </head></html>"); var scanner = new DefaultScanner(source, uri); scanner.Start(); Assert.AreEqual(1, scanner.Results.Count); Assert.AreEqual(1, scanner.SuggestedScanners.Count); // just FaviconIcoScanner }
public void MapReferenceProperty_MapperImplemented_AllOk() { var mapper = new Mapper(); mapper.CreateConfiguration <MockSource1, MockDestination1>() .AddMap(s => s.GuidProp, d => d.GuidProp) .AddMap(s => s.StringProp, d => d.StringProp) .AddMap(s => s.IntProp, d => d.IntProp); mapper.CreateConfiguration <MockSource, MockDestination>() .AddMap(s => s.GuidProp, d => d.GuidProp) .AddMap(s => s.StringProp, d => d.StringProp) .AddMap(s => s.IntProp, d => d.IntProp) .AddMap(s => s.DateTimeProp, d => d.DateTimeProp) .AddMap(s => s.DoubleProp, d => d.DoubleProp) .AddMap(s => s.ReferenceProperty, d => d.ReferenceProperty); var source = new MockSource() { GuidProp = Guid.NewGuid(), StringProp = "anyString", IntProp = 1234, DateTimeProp = DateTime.Now, DoubleProp = 123.456, ReferenceProperty = new MockSource1() { GuidProp = Guid.NewGuid(), StringProp = "anyRefString", IntProp = 456 } }; var result = mapper.Map <MockSource, MockDestination>(source); Assert.AreEqual(source.GuidProp, result.GuidProp, "GuidProp error."); Assert.AreEqual(source.StringProp, result.StringProp, "StringProp error."); Assert.AreEqual(source.IntProp, result.IntProp, "IntProp error."); Assert.AreEqual(source.DateTimeProp, result.DateTimeProp, "DateTimeProp error."); Assert.AreEqual(source.DoubleProp, result.DoubleProp, "DoubleProp error."); Assert.AreEqual(source.ReferenceProperty.GuidProp, result.ReferenceProperty.GuidProp, "ReferenceProperty.GuidProp error."); Assert.AreEqual(source.ReferenceProperty.StringProp, result.ReferenceProperty.StringProp, "ReferenceProperty.StringProp error."); Assert.AreEqual(source.ReferenceProperty.IntProp, result.ReferenceProperty.IntProp, "ReferenceProperty.IntProp error."); }
public void SuggestedScanners_InvalidLinks_SuggestFaviconIco() { var uri = new Uri("http://www.example.com"); var source = new MockSource(); source.AddTextResource(uri, @" <html><head> <link rel='icon' src='favicon1.png'> <link href='favicon1.png'> </head><body>Fake content.</body></html>"); var scanner = new DefaultScanner(source, uri); scanner.Start(); Assert.AreEqual(0, scanner.Results.Count); Assert.AreEqual(1, scanner.SuggestedScanners.Count); Assert.IsInstanceOfType(scanner.SuggestedScanners[0], typeof(FaviconIcoScanner)); }
public void Fetcher_PerfectIsLastLink_MakeTwoRequests() { var uri = new Uri("http://www.example.com"); var source = new MockSource(); source.AddTextResource(uri, @" <html><head> <link rel='shortcut icon' href='favicon_32.png' sizes='32x32'> <link rel='shortcut icon' href='favicon_16.png' sizes='16x16'> </head></html>"); source.AddImageResource(new Uri(uri, "/favicon_32.png"), new Size(32, 32)); source.AddImageResource(new Uri(uri, "/favicon_16.png"), new Size(16, 16)); var fetcher = new Fetcher(source); fetcher.FetchClosest(uri, new Size(16, 16)); Assert.AreEqual(2, source.RequestCount); }