Update AndroidMock with version that supports SDK 9.

This is a simple export from the upstream repo.
Change-Id: I3b9d49116adb0089352357189c08a7b8f359814d
diff --git a/src/build-framework-gen.xml b/src/build-framework-gen.xml
index c23ba7e..674ab30 100644
--- a/src/build-framework-gen.xml
+++ b/src/build-framework-gen.xml
@@ -14,6 +14,7 @@
   <property name="android-201-jar" value="android_v201.jar"/>
   <property name="android-21-jar" value="android_v21.jar"/>
   <property name="android-22-jar" value="android_v22.jar"/>
+  <property name="android-23-jar" value="android_v23.jar"/>
 
   <!-- property name="framework.mock-bin" value=see build.properties -->
   <!-- property name="framework.mock-jar" value=see build.properties -->
@@ -43,6 +44,7 @@
     <generate-framework-mocks api-jar-file="${android-201-jar}" api-level="6"/>
     <generate-framework-mocks api-jar-file="${android-21-jar}" api-level="7"/>
     <generate-framework-mocks api-jar-file="${android-22-jar}" api-level="8"/>
+  	<generate-framework-mocks api-jar-file="${android-23-jar}" api-level="9"/>
     <jar destfile="${framework.mock-bin}/${framework.mock-jar}"
          basedir="${framework.mock-staging}" includes="**/*.class" index="true"/>
   </target>
diff --git a/src/com/google/android/testing/mocking/FileUtils.java b/src/com/google/android/testing/mocking/FileUtils.java
index f759c57..b03a2c5 100644
--- a/src/com/google/android/testing/mocking/FileUtils.java
+++ b/src/com/google/android/testing/mocking/FileUtils.java
@@ -62,7 +62,9 @@
     if (!filename.endsWith(".class")) {
       throw new IllegalArgumentException("Argument provided is not a class filename: " + filename);
     }
-    return filename.replace(File.separatorChar, '.').substring(0, filename.length() - 6);
+    // On non-Linux, files use the native separator, but jar entries use /... sigh
+    return filename.replace(File.separatorChar, '.').replace('/', '.')
+        .substring(0, filename.length() - 6);
   }
 
   static void saveClassToFolder(GeneratedClassFile clazz, String outputFolderName)
diff --git a/src/com/google/android/testing/mocking/SdkVersion.java b/src/com/google/android/testing/mocking/SdkVersion.java
index ee61707..ed1424b 100644
--- a/src/com/google/android/testing/mocking/SdkVersion.java
+++ b/src/com/google/android/testing/mocking/SdkVersion.java
@@ -27,7 +27,7 @@
  */
 public enum SdkVersion {
   UNKNOWN("", -1), CUPCAKE("v15", 3), DONUT("v16", 4), ECLAIR_0_1("v201", 6),
-  ECLAIR_MR1("v21", 7), FROYO("v22", 8);
+  ECLAIR_MR1("v21", 7), FROYO("v22", 8), GINGERBREAD("v23", 9);
 
   private static final int SDK_VERSION;
 
diff --git a/tests/com/google/android/testing/mocking/AndroidFrameworkMockGeneratorTest.java b/tests/com/google/android/testing/mocking/AndroidFrameworkMockGeneratorTest.java
index 813063f..b43fa5d 100644
--- a/tests/com/google/android/testing/mocking/AndroidFrameworkMockGeneratorTest.java
+++ b/tests/com/google/android/testing/mocking/AndroidFrameworkMockGeneratorTest.java
@@ -22,6 +22,7 @@
 
 import junit.framework.TestCase;
 
+import java.io.File;
 import java.io.IOException;
 import java.util.ArrayList;
 import java.util.Arrays;
@@ -123,7 +124,8 @@
     for (SdkVersion version : SdkVersion.getAllVersions()) {
       getMockGenerator();
       assertEquals("lib/android/android_" + version.getVersionName() + ".jar",
-          AndroidFrameworkMockGenerator.getJarFileNameForVersion(version));
+          AndroidFrameworkMockGenerator.getJarFileNameForVersion(version)
+              .replace('\\', '/'));
     }
   }
 
@@ -151,7 +153,9 @@
         "v21.genmocks.java.util.VectorDelegateSubclass",
         "v21.genmocks.java.util.VectorDelegateInterface",
         "v22.genmocks.java.util.VectorDelegateSubclass",
-        "v22.genmocks.java.util.VectorDelegateInterface"
+        "v22.genmocks.java.util.VectorDelegateInterface",
+        "v23.genmocks.java.util.VectorDelegateSubclass",
+        "v23.genmocks.java.util.VectorDelegateInterface"
     };
     assertEquals(expectedClassNames.length, mocks.size());
     for (int i = 0; i < mocks.size(); ++i) {
diff --git a/tests/com/google/android/testing/mocking/FileUtilsTest.java b/tests/com/google/android/testing/mocking/FileUtilsTest.java
index b1058e3..17c8888 100644
--- a/tests/com/google/android/testing/mocking/FileUtilsTest.java
+++ b/tests/com/google/android/testing/mocking/FileUtilsTest.java
@@ -17,6 +17,7 @@
 
 import junit.framework.TestCase;
 
+import java.io.File;
 import java.util.Vector;
 
 /**
@@ -24,14 +25,18 @@
  */
 public class FileUtilsTest extends TestCase {
   public void testGetFilenameForClass() {
-    assertEquals("java/lang/Object.class", FileUtils.getFilenameFor(Object.class.getName()));
-    assertEquals("com/google/android/testing/mocking/FileUtilsTest$InnerClass.class",
+    assertEquals(convertPathToNative("java/lang/Object.class"),
+        FileUtils.getFilenameFor(Object.class.getName()));
+    assertEquals(convertPathToNative(
+            "com/google/android/testing/mocking/FileUtilsTest$InnerClass.class"),
         FileUtils.getFilenameFor(InnerClass.class.getName()));
   }
 
   public void testGetClassNameFor() {
-    assertEquals("java/lang/Object.class", FileUtils.getFilenameFor(Object.class.getName()));
-    assertEquals("com/google/android/testing/mocking/FileUtilsTest$InnerClass.class",
+    assertEquals(convertPathToNative("java/lang/Object.class"),
+        FileUtils.getFilenameFor(Object.class.getName()));
+    assertEquals(convertPathToNative(
+            "com/google/android/testing/mocking/FileUtilsTest$InnerClass.class"),
         FileUtils.getFilenameFor(InnerClass.class.getName()));
   }
 
@@ -65,6 +70,10 @@
         FileUtils.getSubclassNameFor(Vector.class, SdkVersion.UNKNOWN));
   }
 
+  private String convertPathToNative(String path) {
+    return path.replace('/', File.separatorChar).replace('\\', File.separatorChar);
+  }
+
   class InnerClass {
   }
 }
diff --git a/tests/com/google/android/testing/mocking/SdkVersionTest.java b/tests/com/google/android/testing/mocking/SdkVersionTest.java
index eb7c764..93fd17c 100644
--- a/tests/com/google/android/testing/mocking/SdkVersionTest.java
+++ b/tests/com/google/android/testing/mocking/SdkVersionTest.java
@@ -28,7 +28,7 @@
   public void testGetAllVersions() {
     List<SdkVersion> versions = Arrays.asList(SdkVersion.getAllVersions());
     List<SdkVersion> values = Arrays.asList(SdkVersion.values());
-    assertEquals(5, versions.size());
+    assertEquals(6, versions.size());
     assertTrue(values.containsAll(versions));
     assertFalse(versions.contains(SdkVersion.UNKNOWN));
   }
@@ -39,9 +39,10 @@
     assertEquals("v201", SdkVersion.ECLAIR_0_1.getVersionName());
     assertEquals("v21", SdkVersion.ECLAIR_MR1.getVersionName());
     assertEquals("v22", SdkVersion.FROYO.getVersionName());
+    assertEquals("v23", SdkVersion.GINGERBREAD.getVersionName());
     assertEquals("", SdkVersion.UNKNOWN.getVersionName());
     assertEquals("Unknown new SDK has been added, update this test",
-        6, SdkVersion.values().length);
+        7, SdkVersion.values().length);
   }
 
   public void testGetPackagePrefix() {
@@ -50,9 +51,10 @@
     assertEquals("v201.", SdkVersion.ECLAIR_0_1.getPackagePrefix());
     assertEquals("v21.", SdkVersion.ECLAIR_MR1.getPackagePrefix());
     assertEquals("v22.", SdkVersion.FROYO.getPackagePrefix());
+    assertEquals("v23.", SdkVersion.GINGERBREAD.getPackagePrefix());
     assertEquals("", SdkVersion.UNKNOWN.getPackagePrefix());
     assertEquals("Unknown new SDK has been added, update this test",
-        6, SdkVersion.values().length);
+        7, SdkVersion.values().length);
   }
 
   public void testGetCurrentVersion() {
@@ -66,8 +68,10 @@
     assertEquals(SdkVersion.ECLAIR_0_1, SdkVersion.getVersionFor(6));
     assertEquals(SdkVersion.ECLAIR_MR1, SdkVersion.getVersionFor(7));
     assertEquals(SdkVersion.FROYO, SdkVersion.getVersionFor(8));
+    assertEquals(SdkVersion.GINGERBREAD, SdkVersion.getVersionFor(9));
     assertEquals(SdkVersion.UNKNOWN, SdkVersion.getVersionFor(-1));
-    for (int i = 9; i < 50; ++i) {
+    // All likely future version numbers...  Modify this when a new version is added
+    for (int i = 10; i < 50; ++i) {
       assertEquals("Unknown new SDK has been added, update this test",
           SdkVersion.UNKNOWN, SdkVersion.getVersionFor(i));
     }