package org.quaere.alias.test; import java.math.BigDecimal; import java.util.List; import junit.framework.Assert; import org.junit.Test; import static org.quaere.alias.CompareType.*; import static org.quaere.alias.ListProvider.*; public class SamplesManyTest { public static class Pair { public Integer a, b; } @Test public void testSelectManyCompoundFrom1() { // public void Linq14() { // int[] numbersA = { 0, 2, 4, 5, 6, 8, 9 }; // int[] numbersB = { 1, 3, 5, 7, 8 }; // var pairs = // from a in numbersA, // b in numbersB // where a < b // select new {a, b}; // Console.WriteLine("Pairs where a < b:"); // foreach (var pair in pairs) { // Console.WriteLine("{0} is less than {1}", pair.a, pair.b); // } // } int[] numbersA = { 0, 2, 4, 5, 6, 8, 9 }; int[] numbersB = { 1, 3, 5, 7, 8 }; Pair x = template(Pair.class); List<Pair> pairs = from(numbersA, A) .join(numbersB, B) .where(test(A, SMALLER, B)) .select(x, set(x.a, A), set(x.b, B)); String result = ""; for (Pair p : pairs) { result += p.a + "<" + p.b + ";"; } Assert.assertEquals(result, "0<1;0<3;0<5;0<7;0<8;2<3;2<5;2<7;2<8;4<5;4<7;4<8;5<7;5<8;6<7;6<8;"); } @Test public void testSelectManyCompoundFrom2() { // public void Linq15() { // List customers = GetCustomerList(); // var orders = // from c in customers, // o in c.Orders // where o.Total < 500.00M // select new {c.CustomerID, o.OrderID, o.Total}; // ObjectDumper.Write(orders); // } // CustomerID=ALFKI OrderID=10702 Total=330.00 // CustomerID=ALFKI OrderID=10952 Total=471.20 // CustomerID=ANATR OrderID=10308 Total=88.80 // CustomerID=ANATR OrderID=10625 Total=479.75 // CustomerID=ANATR OrderID=10759 Total=320.00 // CustomerID=ANTON OrderID=10365 Total=403.20 // CustomerID=ANTON OrderID=10682 Total=375.50 // CustomerID=AROUT OrderID=10355 Total=480.00 // ... List<Customer> customers = Customer.getCustomerList(); Customer c = alias(Customer.class); Order o = alias(Order.class); class CustOrder { String customerId; Integer orderId; BigDecimal total; } CustOrder t = template(CustOrder.class); List<CustOrder> orders = from(customers, c) .join(c.orders, o) .where(test(o.total, SMALLER, 500.00)) .select(t, set(t.customerId, c.customerId), set(t.orderId, o.orderId), set(t.total, o.total)); int todoImplementListResolution; int todoVerifyResult; } @Test public void testSelectManyCompoundFrom3() { // public void Linq16() { // List customers = GetCustomerList(); // var orders = // from c in customers, // o in c.Orders // where o.OrderDate >= new DateTime(1998, 1, 1) // select new {c.CustomerID, o.OrderID, o.OrderDate}; // ObjectDumper.Write(orders); // } // CustomerID=ALFKI OrderID=10835 OrderDate=1/15/1998 // CustomerID=ALFKI OrderID=10952 OrderDate=3/16/1998 // CustomerID=ALFKI OrderID=11011 OrderDate=4/9/1998 // CustomerID=ANATR OrderID=10926 OrderDate=3/4/1998 // CustomerID=ANTON OrderID=10856 OrderDate=1/28/1998 // CustomerID=AROUT OrderID=10864 OrderDate=2/2/1998 // CustomerID=AROUT OrderID=10920 OrderDate=3/3/1998 } @Test public void testSelectManyFromAssignment() { // public void Linq17() { // List customers = GetCustomerList(); // var orders = // from c in customers, // o in c.Orders, // total = o.Total // where total >= 2000.0M // select new {c.CustomerID, o.OrderID, total}; // ObjectDumper.Write(orders); // } // CustomerID=ANTON OrderID=10573 total=2082.00 // CustomerID=AROUT OrderID=10558 total=2142.90 // CustomerID=AROUT OrderID=10953 total=4441.25 // CustomerID=BERGS OrderID=10384 total=2222.40 // CustomerID=BERGS OrderID=10524 total=3192.65 // CustomerID=BERGS OrderID=10672 total=3815.25 // CustomerID=BERGS OrderID=10857 total=2048.21 // CustomerID=BLONP OrderID=10360 total=7390.20 } @Test public void testSelectManyMultipleFrom() { // List customers = GetCustomerList(); // DateTime cutoffDate = new DateTime(1997, 1, 1); // var orders = // from c in customers // where c.Region == "WA" // from o in c.Orders // where o.OrderDate >= cutoffDate // select new {c.CustomerID, o.OrderID}; // ObjectDumper.Write(orders); // CustomerID=LAZYK OrderID=10482 // CustomerID=LAZYK OrderID=10545 // CustomerID=TRAIH OrderID=10574 // CustomerID=TRAIH OrderID=10577 // CustomerID=TRAIH OrderID=10822 // CustomerID=WHITC OrderID=10469 // CustomerID=WHITC OrderID=10483 } @Test public void testSelectManyIndexed() { // public void Linq19() { // List customers = GetCustomerList(); // var customerOrders = // customers.SelectMany( // (cust, custIndex) => // cust.Orders.Select(o => "Customer #" + (custIndex + 1) + // " has an order with OrderID " + o.OrderID) ); // ObjectDumper.Write(customerOrders); // } // Customer #1 has an order with OrderID 10643 // Customer #1 has an order with OrderID 10692 // Customer #1 has an order with OrderID 10702 // Customer #1 has an order with OrderID 10835 // Customer #1 has an order with OrderID 10952 // Customer #1 has an order with OrderID 11011 // Customer #2 has an order with OrderID 10308 // Customer #2 has an order with OrderID 10625 } }