86 lines
3.0 KiB
Java
86 lines
3.0 KiB
Java
/*
|
|
* Copyright (C) 2017 The Gson authors
|
|
*
|
|
* 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.google.gson.internal;
|
|
|
|
import static com.google.common.truth.Truth.assertThat;
|
|
|
|
import org.junit.Test;
|
|
|
|
/**
|
|
* Unit and functional tests for {@link JavaVersion}
|
|
*
|
|
* @author Inderjeet Singh
|
|
*/
|
|
public class JavaVersionTest {
|
|
// Borrowed some of test strings from
|
|
// https://github.com/prestodb/presto/blob/master/presto-main/src/test/java/com/facebook/presto/server/TestJavaVersion.java
|
|
|
|
@Test
|
|
public void testGetMajorJavaVersion() {
|
|
// Gson currently requires at least Java 7
|
|
assertThat(JavaVersion.getMajorJavaVersion() >= 7).isTrue();
|
|
}
|
|
|
|
@Test
|
|
public void testJava6() {
|
|
// http://www.oracle.com/technetwork/java/javase/version-6-141920.html
|
|
assertThat(JavaVersion.getMajorJavaVersion("1.6.0")).isEqualTo(6);
|
|
}
|
|
|
|
@Test
|
|
public void testJava7() {
|
|
// http://www.oracle.com/technetwork/java/javase/jdk7-naming-418744.html
|
|
assertThat(JavaVersion.getMajorJavaVersion("1.7.0")).isEqualTo(7);
|
|
}
|
|
|
|
@Test
|
|
public void testJava8() {
|
|
assertThat(JavaVersion.getMajorJavaVersion("1.8")).isEqualTo(8);
|
|
assertThat(JavaVersion.getMajorJavaVersion("1.8.0")).isEqualTo(8);
|
|
assertThat(JavaVersion.getMajorJavaVersion("1.8.0_131")).isEqualTo(8);
|
|
assertThat(JavaVersion.getMajorJavaVersion("1.8.0_60-ea")).isEqualTo(8);
|
|
assertThat(JavaVersion.getMajorJavaVersion("1.8.0_111-internal")).isEqualTo(8);
|
|
|
|
// openjdk8 per https://github.com/AdoptOpenJDK/openjdk-build/issues/93
|
|
assertThat(JavaVersion.getMajorJavaVersion("1.8.0-internal")).isEqualTo(8);
|
|
assertThat(JavaVersion.getMajorJavaVersion("1.8.0_131-adoptopenjdk")).isEqualTo(8);
|
|
}
|
|
|
|
@Test
|
|
public void testJava9() {
|
|
// Legacy style
|
|
assertThat(JavaVersion.getMajorJavaVersion("9.0.4")).isEqualTo(9); // Oracle JDK 9
|
|
// Debian as reported in https://github.com/google/gson/issues/1310
|
|
assertThat(JavaVersion.getMajorJavaVersion("9-Debian")).isEqualTo(9);
|
|
|
|
// New style
|
|
assertThat(JavaVersion.getMajorJavaVersion("9-ea+19")).isEqualTo(9);
|
|
assertThat(JavaVersion.getMajorJavaVersion("9+100")).isEqualTo(9);
|
|
assertThat(JavaVersion.getMajorJavaVersion("9.0.1+20")).isEqualTo(9);
|
|
assertThat(JavaVersion.getMajorJavaVersion("9.1.1+20")).isEqualTo(9);
|
|
}
|
|
|
|
@Test
|
|
public void testJava10() {
|
|
assertThat(JavaVersion.getMajorJavaVersion("10.0.1")).isEqualTo(10); // Oracle JDK 10.0.1
|
|
}
|
|
|
|
@Test
|
|
public void testUnknownVersionFormat() {
|
|
assertThat(JavaVersion.getMajorJavaVersion("Java9")).isEqualTo(6); // unknown format
|
|
}
|
|
}
|