| /* |
| * Copyright (C) 2015 The Android Open Source Project |
| * |
| * Licensed under the Apache License, Version 2.0 (the "License"); |
| * you may not use this file except in compliance with the License. |
| * You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, software |
| * distributed under the License is distributed on an "AS IS" BASIS, |
| * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| * See the License for the specific language governing permissions and |
| * limitations under the License. |
| */ |
| |
| package com.android.ide.common.blame; |
| |
| import static org.junit.Assert.assertEquals; |
| |
| import com.google.gson.Gson; |
| import com.google.gson.GsonBuilder; |
| |
| import org.junit.AfterClass; |
| import org.junit.BeforeClass; |
| import org.junit.Test; |
| import org.junit.experimental.runners.Enclosed; |
| import org.junit.runner.RunWith; |
| import org.junit.runners.Parameterized; |
| |
| import java.io.File; |
| import java.util.Arrays; |
| import java.util.Collection; |
| |
| @RunWith(Enclosed.class) |
| public class SourceFileJsonTypeAdapterTest { |
| |
| private static GsonBuilder sGsonBuilder = new GsonBuilder() |
| .registerTypeAdapter(SourceFile.class, new SourceFileJsonTypeAdapter()); |
| |
| @RunWith(Parameterized.class) |
| public static class RoundTripTest { |
| |
| @Parameterized.Parameters(name = "{0}") |
| public static Collection<Object[]> data() { |
| return Arrays.asList(new Object[][]{ |
| {new SourceFile(new File("/path/to/a/file.java"))}, |
| {new SourceFile(new File("/path/to/a/file.java"), "Description")}, |
| {new SourceFile("Description")}, |
| {SourceFile.UNKNOWN}, |
| }); |
| } |
| |
| @Parameterized.Parameter |
| public SourceFile mSourceFile; |
| |
| private static Gson sGson; |
| |
| @BeforeClass |
| public static void initGson() { |
| sGson = sGsonBuilder.create(); |
| } |
| |
| @Test |
| public void test() { |
| assertEquals(mSourceFile, sGson.fromJson(sGson.toJson(mSourceFile), SourceFile.class)); |
| } |
| |
| @AfterClass |
| public static void removeGson() { |
| sGson = null; |
| } |
| } |
| |
| @RunWith(Parameterized.class) |
| public static class DeserializeTest { |
| |
| @Parameterized.Parameters(name = "fromJson(\"{1}\") should be {0}") |
| public static Collection<Object[]> data() { |
| return Arrays.asList(new Object[][]{ |
| { |
| new SourceFile(new File("/path/file.java")), |
| "\"/path/file.java\"" |
| }, |
| { |
| new SourceFile(new File("/path/f.java")), |
| "{\"path\":\"/path/f.java\"}" |
| }, |
| { |
| new SourceFile(new File("/path/file.java"), "Description"), |
| "{\"description\":\"Description\", \"path\":\"/path/file.java\"}" |
| }, |
| { |
| new SourceFile("Description"), |
| "{\"description\":\"Description\"}" |
| }, |
| { |
| SourceFile.UNKNOWN, |
| "{}" |
| }, |
| { |
| SourceFile.UNKNOWN, |
| "\"\"" |
| }, |
| { |
| SourceFile.UNKNOWN, |
| "{\"foo\":\"\"}" |
| }, |
| { |
| SourceFile.UNKNOWN, |
| "{\"foo\": {\"bar\" : \":)\"}}" |
| }, |
| }); |
| } |
| |
| @Parameterized.Parameter(value = 0) |
| public SourceFile mSourceFile; |
| |
| @Parameterized.Parameter(value = 1) |
| public String jsonString; |
| |
| |
| private static Gson sGson; |
| |
| @BeforeClass |
| public static void initGson() { |
| sGson = sGsonBuilder.create(); |
| } |
| |
| @Test |
| public void test() { |
| assertEquals(mSourceFile, sGson.fromJson(jsonString, SourceFile.class)); |
| } |
| |
| @AfterClass |
| public static void removeGson() { |
| sGson = null; |
| } |
| } |
| |
| |
| } |