package org.quaere.alias.test; import static org.quaere.alias.ListProvider.D; import static org.quaere.alias.ListProvider.W; import static org.quaere.alias.ListProvider.alias; import static org.quaere.alias.ListProvider.asc; import static org.quaere.alias.ListProvider.charAt; import static org.quaere.alias.ListProvider.desc; import static org.quaere.alias.ListProvider.equal; import static org.quaere.alias.ListProvider.from; import static org.quaere.alias.ListProvider.index; import static org.quaere.alias.ListProvider.length; import java.util.List; import junit.framework.Assert; import org.junit.Test; public class SamplesOrderByTest { @Test public void testOrderBySimple1() { // public void Linq28() { // string[] words = { "cherry", "apple", "blueberry" }; // var sortedWords = // from w in words // orderby w // select w; // Console.WriteLine("The sorted list of words:"); // foreach (var w in sortedWords) { // Console.WriteLine(w); // } // } String[] words = { "cherry", "apple", "blueberry" }; String w = alias(words); List<String> sortedWords = from(w) .orderBy(w) .select(); String result = ""; for (String x : sortedWords) { result += x + ";"; } Assert.assertEquals("apple;blueberry;cherry;", result); } @Test public void testOrderBySimple2() { // public void Linq29() { // string[] words = { "cherry", "apple", "blueberry" }; // var sortedWords = // from w in words // orderby w.Length // select w; // Console.WriteLine("The sorted list of words (by length):"); // foreach (var w in sortedWords) { // Console.WriteLine(w); // } String[] words = { "cherry", "apple", "blueberry" }; String w = alias(words); List<String> sortedWords = from(w).orderBy(length(w)).select(); String result = ""; for (String x : sortedWords) { result += x + ";"; } Assert.assertEquals(result, "apple;cherry;blueberry;"); } @Test public void testOrderBySimple3() { // public void Linq30() { // List products = GetProductList(); // var sortedProducts = // from p in products // orderby p.ProductName // select p; // ObjectDumper.Write(sortedProducts); // } List<Product> products = Product.getProductList(); Product p = alias(Product.class, products); List<Product> sortedProducts = from(p).orderBy(p.productName).select(); String last = ""; for (Product x : sortedProducts) { Assert.assertTrue(x.productName.compareTo(last) >= 0); last = x.productName; } } @Test public void testOrderByComparer() { // public class CaseInsensitiveComparer : IComparer<string> { // public int Compare(string x, string y) { // return string.Compare(x, y, true); // } // } // public void Linq31() { // string[] words = { "aPPLE", "AbAcUs", "bRaNcH", "BlUeBeRrY", "ClOvEr", "cHeRry"}; // var sortedWords = words.OrderBy(a => a, new CaseInsensitiveComparer()); // ObjectDumper.Write(sortedWords); // } String[] words = { "aPPLE", "AbAcUs", "bRaNcH", "BlUeBeRrY", "ClOvEr", "cHeRry"}; String a = alias(words); List<String> sortedWords = from(a).orderBy(asc(a, String.CASE_INSENSITIVE_ORDER)).select(); String result = ""; for (String x : sortedWords) { result += x + ";"; } Assert.assertEquals("AbAcUs;aPPLE;BlUeBeRrY;bRaNcH;cHeRry;ClOvEr;", result); } @Test public void testOrderByDescendingSimple1() { // public void Linq32() { // double[] doubles = { 1.7, 2.3, 1.9, 4.1, 2.9 }; // var sortedDoubles = // from d in doubles // orderby d descending // select d; // Console.WriteLine("The doubles from highest to lowest:"); // foreach (var d in sortedDoubles) { // Console.WriteLine(d); // } // } double[] doubles = { 1.7, 2.3, 1.9, 4.1, 2.9 }; List<Double> sortedDoubles = from(doubles, D).orderBy(desc(D)).select(); String result = ""; for (Double x : sortedDoubles) { result += x + ";"; } Assert.assertEquals("4.1;2.9;2.3;1.9;1.7;", result); } @Test public void testOrderByDescendingSimple2() { // public void Linq33() { // List products = GetProductList(); // var sortedProducts = // from p in products // orderby p.UnitsInStock descending // select p; // ObjectDumper.Write(sortedProducts); // } List<Product> products = Product.getProductList(); Product p = alias(Product.class); List<Product> sortedProducts = from(products, p) .orderBy(desc(p.unitsInStock)) .select(); Integer last = null; for (Product x : sortedProducts) { Assert.assertTrue(last == null || x.unitsInStock.compareTo(last) <= 0); last = x.unitsInStock; } } @Test public void testOrderByDescendingComparer() { // public class CaseInsensitiveComparer : IComparerspan class="qs-keyword">string> { // publicint Compare(string x, string y) { // returnstring.Compare(x, y, true); // } // } // public void Linq34() { // string[] words = { "aPPLE", "AbAcUs", "bRaNcH", "BlUeBeRrY", "ClOvEr", "cHeRry"}; // var sortedWords = words.OrderByDescending(a => a, new CaseInsensitiveComparer()); // ObjectDumper.Write(sortedWords); // } String[] words = { "aPPLE", "AbAcUs", "bRaNcH", "BlUeBeRrY", "ClOvEr", "cHeRry"}; List<String> sortedWords = from(words, W) .orderBy(desc(W, String.CASE_INSENSITIVE_ORDER)) .select(); Assert.assertEquals( "[ClOvEr, cHeRry, bRaNcH, BlUeBeRrY, aPPLE, AbAcUs]", sortedWords.toString()); } @Test public void testThenBySimple() { // public void Linq35() { // string[] digits = { "zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine" }; // var sortedDigits = // from d in digits // orderby d.Length, d // select d; // Console.WriteLine("Sorted digits:"); // foreach (var d in sortedDigits) { // Console.WriteLine(d); // } // } String[] digits = { "zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine" }; List<String> sortedDigits = from(digits, D) .orderBy(length(D), D) .select(); Assert.assertEquals("[one, six, two, five, four, nine, zero, eight, seven, three]", sortedDigits.toString()); } @Test public void testThenByComparer() { // public class CaseInsensitiveComparer : IComparerspan class="qs-keyword">string> { // public int Compare(string x, string y) { // return string.Compare(x, y, true); // } // } // publicvoid Linq36() { // string[] words = { "aPPLE", "AbAcUs", "bRaNcH", "BlUeBeRrY", "ClOvEr", "cHeRry"}; // var sortedWords = // words.OrderBy(a => a.Length) // .ThenBy(a => a, new CaseInsensitiveComparer()); // ObjectDumper.Write(sortedWords); // } String[] words = { "aPPLE", "AbAcUs", "bRaNcH", "BlUeBeRrY", "ClOvEr", "cHeRry"}; List<String> sortedWords = from(words, W) .orderBy(length(W), asc(W, String.CASE_INSENSITIVE_ORDER)) .select(); Assert.assertEquals( "[aPPLE, AbAcUs, bRaNcH, cHeRry, ClOvEr, BlUeBeRrY]", sortedWords.toString()); } @Test public void testThenByDescendingSimple() { // public void Linq37() { // List products = GetProductList(); // var sortedProducts = // from p in products // orderby p.Category, p.UnitPrice descending select p; // // ObjectDumper.Write(sortedProducts); // } List<Product> products = Product.getProductList(); Product p = alias(Product.class); List<Product> sortedProducts = from(products, p) .orderBy(p.category, desc(p.unitPrice)) .select(); Product last = null; for (Product x : sortedProducts) { if (last != null) { int c = last.category.compareTo(x.category); Assert.assertTrue(c >= 0); if (c == 0) { Assert.assertTrue(x.unitPrice >= last.unitPrice); } } } } @Test public void testThenByDescendingComprarer() { // public class CaseInsensitiveComparer : IComparerspan class="qs-keyword">string> { // publicint Compare(string x, string y) { // returnstring.Compare(x, y, true); // } // } // public void Linq38() { // string[] words = { "aPPLE", "AbAcUs", "bRaNcH", "BlUeBeRrY", "ClOvEr", "cHeRry"}; // var sortedWords = // words.OrderBy(a => a.Length) // .ThenByDescending(a => a, new CaseInsensitiveComparer()); // ObjectDumper.Write(sortedWords); // } String[] words = { "aPPLE", "AbAcUs", "bRaNcH", "BlUeBeRrY", "ClOvEr", "cHeRry"}; List<String> sortedWords = from(words, W) .orderBy(length(W), desc(W, String.CASE_INSENSITIVE_ORDER)) .select(); Assert.assertEquals( "[aPPLE, ClOvEr, cHeRry, bRaNcH, AbAcUs, BlUeBeRrY]", sortedWords.toString()); } @Test public void testReverse() { // public void Linq39() { // string[] digits = { "zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine" }; // var reversedIDigits = ( // from d in digits // where d[1] == 'i' // select d) // .Reverse(); // Console.WriteLine("A backwards list of the digits with a second character of 'i':"); // foreach (var d in reversedIDigits) { // Console.WriteLine(d); // } // } String[] digits = { "zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine" }; List<String> reversedDigits = from(digits, D) .where(equal(charAt(D, 1), 'i')) .orderBy(desc(index())) .select(); Assert.assertEquals( "[nine, eight, six, five]", reversedDigits.toString()); } }