public void InnerKeySelectorNullNoComparer() { CustomerRec[] outer = new CustomerRec[] { new CustomerRec { name = "Tim", custID = 1234 }, new CustomerRec { name = "Bob", custID = 9865 }, new CustomerRec { name = "Robert", custID = 9895 } }; AnagramRec[] inner = new AnagramRec[] { new AnagramRec { name = "Robert", orderID = 93483, total = 19 }, new AnagramRec { name = "miT", orderID = 93489, total = 45 } }; Assert.Throws <ArgumentNullException>("innerKeySelector", () => outer.AsQueryable().GroupJoin(inner.AsQueryable(), e => e.name, null, (cr, arIE) => new JoinRec { name = cr.name, orderID = arIE.Select(o => o.orderID).ToArray(), total = arIE.Select(o => o.total).ToArray() })); }
// [Fact] public void InnerKeySelectorNullNoComparer() { CustomerRec[] outer = new CustomerRec[] { new CustomerRec { name = "Tim", custID = 1234 }, new CustomerRec { name = "Bob", custID = 9865 }, new CustomerRec { name = "Robert", custID = 9895 } }; AnagramRec[] inner = new AnagramRec[] { new AnagramRec { name = "Robert", orderID = 93483, total = 19 }, new AnagramRec { name = "miT", orderID = 93489, total = 45 } }; Assert.Throws <ArgumentNullException>("innerKeySelector", () => outer.GroupJoin(inner, e => e.name, null, createJoinRec)); }
// Overload-2: Test when IEqualityComparer is null public static int Test9() { CustomerRec[] outer = new CustomerRec[] { new CustomerRec { name = "Tim", custID = 1234 }, new CustomerRec { name = "Bob", custID = 9865 }, new CustomerRec { name = "Robert", custID = 9895 } }; AnagramRec[] inner = new AnagramRec[] { new AnagramRec { name = "Robert", orderID = 93483, total = 19 }, new AnagramRec { name = "miT", orderID = 93489, total = 45 } }; JoinRec[] expected = new JoinRec[] { new JoinRec { name = "Tim", orderID = new int?[] {}, total = new int?[] {} }, new JoinRec { name = "Bob", orderID = new int?[] {}, total = new int?[] {} }, new JoinRec { name = "Robert", orderID = new int?[] { 93483 }, total = new int?[] { 19 } } }; Func <CustomerRec, IEnumerable <AnagramRec>, JoinRec> resultSelector = Helper.createJoinRec; var actual = outer.GroupJoin(inner, (e) => e.name, (o) => o.name, resultSelector, null); return(Helper.DataEqual(expected, actual)); }
// Overload-2: Test when resultSelector is null public static int Test11e() { CustomerRec[] outer = new CustomerRec[] { new CustomerRec { name = "Tim", custID = 1234 }, new CustomerRec { name = "Bob", custID = 9865 }, new CustomerRec { name = "Robert", custID = 9895 } }; AnagramRec[] inner = new AnagramRec[] { new AnagramRec { name = "Robert", orderID = 93483, total = 19 }, new AnagramRec { name = "miT", orderID = 93489, total = 45 } }; Func <CustomerRec, IEnumerable <AnagramRec>, JoinRec> resultSelector = Helper.createJoinRec; try { resultSelector = null; var actual = outer.GroupJoin(inner, (e) => e.name, (o) => o.name, resultSelector, new AnagramEqualityComparer()); return(1); } catch (ArgumentNullException ane) { if (!ane.CompareParamName("resultSelector")) { return(1); } return(0); } }
// [Fact] public void ResultSelectorNullNoComparer() { CustomerRec[] outer = new CustomerRec[] { new CustomerRec { name = "Tim", custID = 1234 }, new CustomerRec { name = "Bob", custID = 9865 }, new CustomerRec { name = "Robert", custID = 9895 } }; AnagramRec[] inner = new AnagramRec[] { new AnagramRec { name = "Robert", orderID = 93483, total = 19 }, new AnagramRec { name = "miT", orderID = 93489, total = 45 } }; Assert.Throws <ArgumentNullException>("resultSelector", () => outer.GroupJoin(inner, e => e.name, e => e.name, (Func <CustomerRec, IEnumerable <AnagramRec>, JoinRec>)null)); }
public ActionResult Details(int id) { var product = _productsRepository.GetProduct(id); if (product == null) { return(new HttpStatusCodeResult(HttpStatusCode.NotFound)); } IEnumerable <Promotion> promotions = null; CustomerRec customer = null; var relatedProducts = _productsRepository.GetRelatedProducts(product.Id); var clickEvent = new ClickEvent { ClickTime = DateTime.Now, ProductId = product.Id }; _telemetryRepository.SendClick(clickEvent); if (User.Identity.IsAuthenticated) { customer = _customerRepository.GetCustomerByName(User.Identity.Name); promotions = _promotionsRepository.GetPromotions(customer.CustomerId); } var relatedCatalogItems = relatedProducts .OrderBy(p => p.Name) .Select(relatedProduct => ProductToCatalogItem(promotions, customer, relatedProduct)) .ToList(); return(View(new CatalogItemDetailsModel(ProductToCatalogItem(promotions, customer, product), relatedCatalogItems))); }
public void ResultSelectorNull() { CustomerRec[] outer = new CustomerRec[] { new CustomerRec { name = "Tim", custID = 1234 }, new CustomerRec { name = "Bob", custID = 9865 }, new CustomerRec { name = "Robert", custID = 9895 } }; AnagramRec[] inner = new AnagramRec[] { new AnagramRec { name = "Robert", orderID = 93483, total = 19 }, new AnagramRec { name = "miT", orderID = 93489, total = 45 } }; AssertExtensions.Throws <ArgumentNullException>("resultSelector", () => outer.AsNaturalQueryable().GroupJoin(inner.AsNaturalQueryable(), e => e.name, e => e.name, (Expression <Func <CustomerRec, IEnumerable <AnagramRec>, JoinRec> >)null, new AnagramEqualityComparer())); }
// outerKeySelector matches more than one innerKeySelector public static int Test9() { CustomerRec[] outer = new CustomerRec[] { new CustomerRec { name = "Prakash", custID = 98022 }, new CustomerRec { name = "Bob", custID = 99022 }, new CustomerRec { name = "Tim", custID = 99021 }, new CustomerRec { name = "Robert", custID = 99022 } }; OrderRec[] inner = new OrderRec[] { new OrderRec { orderID = 45321, custID = 18022, total = 50 }, new OrderRec { orderID = 43421, custID = 29022, total = 20 }, new OrderRec { orderID = 95421, custID = 39021, total = 9 } }; JoinRec[] expected = new JoinRec[] { }; Func <CustomerRec, OrderRec, JoinRec> resultSelector = Helper.createJoinRec; var actual = outer.Join(inner, (e) => e.custID, (o) => o.custID, resultSelector); return(Verification.Allequal(expected, actual)); }
// Overload-2: Test when resultSelector=null public static int Test13e() { CustomerRec[] outer = new CustomerRec[] { new CustomerRec { name = "Prakash", custID = 98022 }, new CustomerRec { name = "Tim", custID = 99021 }, new CustomerRec { name = "Robert", custID = 99022 } }; AnagramRec[] inner = new AnagramRec[] { new AnagramRec { name = "miT", orderID = 43455, total = 10 }, new AnagramRec { name = "Prakash", orderID = 323232, total = 9 } }; Func <CustomerRec, AnagramRec, JoinRec> resultSelector = Helper.createJoinRec; try { resultSelector = null; var actual = outer.Join(inner, (e) => e.name, (o) => o.name, resultSelector, new AnagramEqualityComparer()); return(1); } catch (ArgumentNullException ane) { if (!ane.CompareParamName("resultSelector")) { return(1); } return(0); } }
// Overload-2: Test when IEqualityComparer is not-null public static int Test12() { CustomerRec[] outer = new CustomerRec[] { new CustomerRec { name = "Prakash", custID = 98022 }, new CustomerRec { name = "Tim", custID = 99021 }, new CustomerRec { name = "Robert", custID = 99022 } }; AnagramRec[] inner = new AnagramRec[] { new AnagramRec { name = "miT", orderID = 43455, total = 10 }, new AnagramRec { name = "Prakash", orderID = 323232, total = 9 } }; JoinRec[] expected = new JoinRec[] { new JoinRec { name = "Prakash", orderID = 323232, total = 9 }, new JoinRec { name = "Tim", orderID = 43455, total = 10 } }; Func <CustomerRec, AnagramRec, JoinRec> resultSelector = Helper.createJoinRec; var actual = outer.Join(inner, (e) => e.name, (o) => o.name, resultSelector, new AnagramEqualityComparer()); return(Verification.Allequal(expected, actual)); }
// No match between innerKeySelector and outerKeySelector public static int Test8() { CustomerRec[] outer = new CustomerRec[] { new CustomerRec { name = "Tim", custID = 1234 }, new CustomerRec { name = "Bob", custID = 9865 }, new CustomerRec { name = "Robert", custID = 9895 } }; OrderRec[] inner = new OrderRec[] { new OrderRec { orderID = 97865, custID = 2334, total = 25 }, new OrderRec { orderID = 34390, custID = 9065, total = 19 } }; JoinRec[] expected = new JoinRec[] { new JoinRec { name = "Tim", orderID = new int?[] {}, total = new int?[] {} }, new JoinRec { name = "Bob", orderID = new int?[] {}, total = new int?[] {} }, new JoinRec { name = "Robert", orderID = new int?[] {}, total = new int?[] {} } }; Func <CustomerRec, IEnumerable <OrderRec>, JoinRec> resultSelector = Helper.createJoinRec; var actual = outer.GroupJoin(inner, (e) => e.custID, (o) => o.custID, resultSelector); return(Helper.DataEqual(expected, actual)); }
public static JoinRec createJoinRec(CustomerRec cr, IEnumerable <AnagramRec> arIE) { return(new JoinRec { name = cr.name, orderID = arIE.Select(o => o.orderID).ToArray(), total = arIE.Select(o => o.total).ToArray(), }); }
public static JoinRec createJoinRec(CustomerRec cr, AnagramRec or) { JoinRec jr = new JoinRec(); jr.name = cr.name; jr.orderID = or.orderID; jr.total = or.total; return(jr); }
// Helper function to test index=0 public static IEnumerable <int?> index_zero(CustomerRec cr, int index) { if (index == 0) { return(cr.total); } else { return new int?[] { } }; }
// selector function to test index=max value is right // Tests if index increments correctly public static string index_five(CustomerRec cr, int index) { if (index == 5) { return(cr.name); } else { return(null); } }
public ActionResult Index() { var catalogItems = new List <CatalogItem>(); var products = _productsRepository.GetProducts(); var username = Request.QueryString["user"]; IEnumerable <Promotion> promotions = null; IEnumerable <Product> recommendedProducts = new List <Product>(); CustomerRec customer = null; if (User.Identity.IsAuthenticated) { customer = _customerRepository.GetCustomerByName(User.Identity.Name); if (customer != null) { promotions = _promotionsRepository.GetPromotions(customer.CustomerId); recommendedProducts = _productsRepository.GetRecommendedProducts(customer.CustomerId); } } else if (!String.IsNullOrEmpty(username)) { customer = _customerRepository.GetCustomerByName(username); promotions = _promotionsRepository.GetPromotions(customer.CustomerId); recommendedProducts = _productsRepository.GetRecommendedProducts(customer.CustomerId); } var recommendedCatalogItems = recommendedProducts .OrderBy(p => p.Name) .Select(recommendedProduct => ProductToCatalogItem(promotions, customer, recommendedProduct)) .ToList(); foreach (var product in products.OrderBy(p => p.Name)) { if (User.Identity.IsAuthenticated && customer != null) { var playCount = _productsRepository.GetSongPlayCount(product.Id, customer.CustomerId); product.PlayCount = playCount; } catalogItems.Add(ProductToCatalogItem(promotions, customer, product)); } var catalogModel = new CatalogModel(catalogItems, recommendedCatalogItems); return(View(catalogModel)); }
// outer is empty and inner is non-empty public static int Test1() { CustomerRec[] outer = new CustomerRec[] { }; OrderRec[] inner = new OrderRec[] { new OrderRec { orderID = 45321, custID = 98022, total = 50 }, new OrderRec { orderID = 97865, custID = 32103, total = 25 } }; JoinRec[] expected = new JoinRec[] { }; Func <CustomerRec, IEnumerable <OrderRec>, JoinRec> resultSelector = Helper.createJoinRec; var actual = outer.GroupJoin(inner, (e) => e.custID, (o) => o.custID, resultSelector); return(Helper.DataEqual(expected, actual)); }
// outer is non-empty and inner is non-empty public static int Test2() { CustomerRec[] outer = new CustomerRec[] { new CustomerRec { name = "Tim", custID = 43434 }, new CustomerRec { name = "Bob", custID = 34093 } }; OrderRec[] inner = new OrderRec[] { }; JoinRec[] expected = new JoinRec[] { }; Func <CustomerRec, OrderRec, JoinRec> resultSelector = Helper.createJoinRec; var actual = outer.Join(inner, (e) => e.custID, (o) => o.custID, resultSelector); return(Verification.Allequal(expected, actual)); }
public static JoinRec createJoinRec(CustomerRec cr, IEnumerable <AnagramRec> arIE) { int count = 0; JoinRec jr = new JoinRec(); jr.name = cr.name; jr.orderID = new int?[arIE.Count()]; jr.total = new int?[arIE.Count()]; foreach (AnagramRec ar in arIE) { jr.orderID[count] = ar.orderID; jr.total[count] = ar.total; count++; } return(jr); }
public static JoinRec createJoinRec(CustomerRec cr, IEnumerable <OrderRec> orIE) { int count = 0; JoinRec jr = new JoinRec(); jr.name = cr.name; jr.orderID = new int?[orIE.Count()]; jr.total = new int?[orIE.Count()]; foreach (OrderRec or in orIE) { jr.orderID[count] = or.orderID; jr.total[count] = or.total; count++; } return(jr); }
// outer is non-empty and inner is empty public static int Test2() { CustomerRec[] outer = new CustomerRec[] { new CustomerRec { name = "Tim", custID = 43434 }, new CustomerRec { name = "Bob", custID = 34093 } }; OrderRec[] inner = new OrderRec[] { }; JoinRec[] expected = new JoinRec[] { new JoinRec { name = "Tim", orderID = new int?[] {}, total = new int?[] {} }, new JoinRec { name = "Bob", orderID = new int?[] {}, total = new int?[] {} } }; Func <CustomerRec, IEnumerable <OrderRec>, JoinRec> resultSelector = Helper.createJoinRec; var actual = outer.GroupJoin(inner, (e) => e.custID, (o) => o.custID, resultSelector); return(Helper.DataEqual(expected, actual)); }
// Helper function to test index=max value public static IEnumerable<int?> index_four(CustomerRec cr, int index) { if (index == 4) return cr.total; else return new int?[] { }; }
public static JoinRec createJoinRec(CustomerRec cr, AnagramRec or) { return new JoinRec { name = cr.name, orderID = or.orderID, total = or.total }; }
private static CatalogItem ProductToCatalogItem(IEnumerable <Promotion> promotions, CustomerRec customer, Product relatedProduct) { var catalogItem = new CatalogItem { Id = relatedProduct.Id, Name = relatedProduct.Name, Description = relatedProduct.Description, Title1 = relatedProduct.Title1, Title2 = relatedProduct.Title2, TitlesCount = relatedProduct.TitlesCount, OriginalPrice = relatedProduct.Price, PlayCount = relatedProduct.PlayCount }; var promotion = promotions != null && customer != null ? promotions.FirstOrDefault(p => p.CustomerId == customer.CustomerId && p.ProductId == relatedProduct.Id) : null; if (promotion != null) { catalogItem.CurrentPrice = promotion.NewPrice; catalogItem.PromotionDiscount = promotion.PromotionDiscount; } return(catalogItem); }
public static JoinRec createJoinRec(CustomerRec cr, AnagramRec or) { return(new JoinRec { name = cr.name, orderID = or.orderID, total = or.total }); }
// selector function to test index=max value is right // Tests if index increments correctly public static string index_five(CustomerRec cr, int index) { if (index == 5) return cr.name; else return null; }