Sort subdirectories alphabetically

Change-Id: I5f8716d115380fe68a718c03ae02dd79ebecb28e
diff --git a/javatests/com/google/gitiles/TreeSoyDataTest.java b/javatests/com/google/gitiles/TreeSoyDataTest.java
index cafe4e2..75ae771 100644
--- a/javatests/com/google/gitiles/TreeSoyDataTest.java
+++ b/javatests/com/google/gitiles/TreeSoyDataTest.java
@@ -17,11 +17,11 @@
 import static com.google.common.truth.Truth.assertThat;
 import static com.google.gitiles.TreeSoyData.getTargetDisplayName;
 import static com.google.gitiles.TreeSoyData.resolveTargetUrl;
-import static com.google.gitiles.TreeSoyData.sortByType;
+import static com.google.gitiles.TreeSoyData.sortByTypeAlpha;
 
 import com.google.common.base.Strings;
-import java.util.Map;
 import java.util.HashMap;
+import java.util.Map;
 import org.eclipse.jgit.lib.ObjectId;
 import org.junit.Test;
 import org.junit.runner.RunWith;
@@ -70,22 +70,44 @@
 
   @Test
   public void sortByTypeSortsCorrect() throws Exception {
-    Map<String, String> m1 = new HashMap<String, String>();
-    Map<String, String> m2 = new HashMap<String, String>();
-    Map<String, String> m3 = new HashMap<String, String>();
-    Map<String, String> m4 = new HashMap<String, String>();
-    Map<String, String> m5 = new HashMap<String, String>();
+    Map<String, String> m1 = new HashMap<>();
+    Map<String, String> m2 = new HashMap<>();
+    Map<String, String> m3 = new HashMap<>();
+    Map<String, String> m4 = new HashMap<>();
+    Map<String, String> m5 = new HashMap<>();
+    Map<String, String> m6 = new HashMap<>();
     m1.put("type", "TREE");
+    m1.put("name", "aa");
     m2.put("type", "TREE");
+    m2.put("name", "BB");
     m3.put("type", "SYMLINK");
     m4.put("type", "REGULAR_FILE");
     m5.put("type", "GITLINK");
-    assertThat(sortByType(m1, m2)).isEqualTo(0);
-    assertThat(sortByType(m2, m3)).isEqualTo(-1);
-    assertThat(sortByType(m3, m4)).isEqualTo(-1);
-    assertThat(sortByType(m4, m1)).isEqualTo(1);
-    assertThat(sortByType(m1, m4)).isEqualTo(-1);
-    assertThat(sortByType(m5, m2)).isEqualTo(1);
-    assertThat(sortByType(m2, m5)).isEqualTo(-1);
+    m6.put("type", "TREE");
+    m6.put("name", "AA");
+    assertThat(sortByTypeAlpha(m1, m2)).isEqualTo(-1);
+    assertThat(sortByTypeAlpha(m2, m3)).isEqualTo(-1);
+    assertThat(sortByTypeAlpha(m3, m4)).isEqualTo(-1);
+    assertThat(sortByTypeAlpha(m4, m1)).isEqualTo(1);
+    assertThat(sortByTypeAlpha(m1, m4)).isEqualTo(-1);
+    assertThat(sortByTypeAlpha(m5, m2)).isEqualTo(1);
+    assertThat(sortByTypeAlpha(m2, m5)).isEqualTo(-1);
+    assertThat(sortByTypeAlpha(m1, m6)).isEqualTo(0);
+    assertThat(sortByTypeAlpha(m2, m1)).isEqualTo(1);
+  }
+
+  @Test
+  public void sortByShortestPathFirst() throws Exception {
+    Map<String, String> p1 = new HashMap<>();
+    Map<String, String> p2 = new HashMap<>();
+    Map<String, String> p3 = new HashMap<>();
+    p1.put("type", "TREE");
+    p1.put("name", "short/");
+    p2.put("type", "TREE");
+    p2.put("name", "shortpath/");
+    p3.put("type", "TREE");
+    p3.put("name", "short.path/");
+    assertThat(sortByTypeAlpha(p1, p2)).isLessThan(0);
+    assertThat(sortByTypeAlpha(p1, p3)).isLessThan(0);
   }
 }