├── sample
├── proguard-rules.pro
├── src
│ └── main
│ │ ├── res
│ │ ├── values
│ │ │ ├── colors.xml
│ │ │ └── styles.xml
│ │ ├── values-v21
│ │ │ ├── colors.xml
│ │ │ └── styles.xml
│ │ ├── mipmap-hdpi
│ │ │ └── ic_launcher.png
│ │ ├── mipmap-mdpi
│ │ │ └── ic_launcher.png
│ │ ├── mipmap-xhdpi
│ │ │ └── ic_launcher.png
│ │ ├── mipmap-xxhdpi
│ │ │ └── ic_launcher.png
│ │ ├── mipmap-xxxhdpi
│ │ │ └── ic_launcher.png
│ │ └── layout
│ │ │ └── activity_main.xml
│ │ ├── AndroidManifest.xml
│ │ └── kotlin
│ │ └── io
│ │ └── github
│ │ └── g00fy2
│ │ └── versioncomparesample
│ │ └── MainActivity.kt
└── build.gradle.kts
├── gradle
└── wrapper
│ ├── gradle-wrapper.jar
│ └── gradle-wrapper.properties
├── settings.gradle.kts
├── gradle.properties
├── versioncompare
├── src
│ ├── test
│ │ └── java
│ │ │ └── io
│ │ │ └── github
│ │ │ └── g00fy2
│ │ │ └── versioncompare
│ │ │ ├── VersionEqualsVerifierTest.java
│ │ │ ├── VersionIsAtLeastIgnoreSuffixTest.java
│ │ │ ├── VersionIsAtLeastTest.java
│ │ │ ├── VersionEqualsTest.java
│ │ │ ├── VersionNonCompareMethodsTest.java
│ │ │ └── VersionHigherLowerTest.java
│ └── main
│ │ └── java
│ │ └── io
│ │ └── github
│ │ └── g00fy2
│ │ └── versioncompare
│ │ ├── VersionComparator.java
│ │ └── Version.java
└── build.gradle.kts
├── .editorconfig
├── .github
└── workflows
│ └── build.yml
├── gradlew.bat
├── .gitignore
├── README.md
├── gradlew
└── LICENSE
/sample/proguard-rules.pro:
--------------------------------------------------------------------------------
1 | -renamesourcefileattribute SourceFile
2 | -keepattributes SourceFile,LineNumberTable
--------------------------------------------------------------------------------
/sample/src/main/res/values/colors.xml:
--------------------------------------------------------------------------------
1 |
2 | #ff0099cc
3 |
--------------------------------------------------------------------------------
/sample/src/main/res/values-v21/colors.xml:
--------------------------------------------------------------------------------
1 |
2 | #ff008577
3 |
--------------------------------------------------------------------------------
/gradle/wrapper/gradle-wrapper.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/G00fY2/version-compare/HEAD/gradle/wrapper/gradle-wrapper.jar
--------------------------------------------------------------------------------
/sample/src/main/res/mipmap-hdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/G00fY2/version-compare/HEAD/sample/src/main/res/mipmap-hdpi/ic_launcher.png
--------------------------------------------------------------------------------
/sample/src/main/res/mipmap-mdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/G00fY2/version-compare/HEAD/sample/src/main/res/mipmap-mdpi/ic_launcher.png
--------------------------------------------------------------------------------
/sample/src/main/res/values/styles.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
--------------------------------------------------------------------------------
/sample/src/main/res/mipmap-xhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/G00fY2/version-compare/HEAD/sample/src/main/res/mipmap-xhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/sample/src/main/res/mipmap-xxhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/G00fY2/version-compare/HEAD/sample/src/main/res/mipmap-xxhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/sample/src/main/res/mipmap-xxxhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/G00fY2/version-compare/HEAD/sample/src/main/res/mipmap-xxxhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/sample/src/main/res/values-v21/styles.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
--------------------------------------------------------------------------------
/settings.gradle.kts:
--------------------------------------------------------------------------------
1 | include(":sample", ":versioncompare")
2 |
3 | pluginManagement {
4 | repositories {
5 | google()
6 | gradlePluginPortal()
7 | }
8 | }
--------------------------------------------------------------------------------
/gradle/wrapper/gradle-wrapper.properties:
--------------------------------------------------------------------------------
1 | distributionBase=GRADLE_USER_HOME
2 | distributionPath=wrapper/dists
3 | distributionUrl=https\://services.gradle.org/distributions/gradle-7.4.2-bin.zip
4 | zipStoreBase=GRADLE_USER_HOME
5 | zipStorePath=wrapper/dists
6 |
--------------------------------------------------------------------------------
/gradle.properties:
--------------------------------------------------------------------------------
1 | # Specifies the JVM arguments used for the daemon process.
2 | # The setting is particularly useful for tweaking memory settings.
3 | org.gradle.jvmargs=-Xmx1536m
4 |
5 | # Use R8 in full mode instead of ProGuard compatibility mode.
6 | android.enableR8.fullMode=true
--------------------------------------------------------------------------------
/versioncompare/src/test/java/io/github/g00fy2/versioncompare/VersionEqualsVerifierTest.java:
--------------------------------------------------------------------------------
1 | package io.github.g00fy2.versioncompare;
2 |
3 | import nl.jqno.equalsverifier.EqualsVerifier;
4 | import org.junit.Test;
5 |
6 | public class VersionEqualsVerifierTest {
7 |
8 | @Test
9 | public void equalsContract() {
10 | EqualsVerifier.forClass(Version.class)
11 | .withIgnoredFields("originalString", "subversionNumbers", "suffix")
12 | .withNonnullFields("trimmedSubversionNumbers", "releaseType", "preReleaseVersion")
13 | .verify();
14 | }
15 | }
--------------------------------------------------------------------------------
/.editorconfig:
--------------------------------------------------------------------------------
1 | root=true
2 |
3 | [*.{java,kt,kts}]
4 | charset=utf-8
5 | end_of_line=lf
6 | indent_size=2
7 | indent_style=space
8 | max_line_length=120
9 | insert_final_newline=false
10 |
11 | [*.{kt,kts}]
12 | ij_kotlin_name_count_to_use_star_import=2147483647
13 | ij_kotlin_name_count_to_use_star_import_for_members=2147483647
14 | ij_kotlin_imports_layout=*,java.**,javax.**,kotlin.**,^
15 |
16 | [*.java]
17 | ij_java_names_count_to_use_import_on_demand=2147483647
18 | ij_java_class_count_to_use_import_on_demand=2147483647
19 | ij_java_layout_static_imports_separately=true
20 | ij_java_imports_layout=*,javax.**,java.**,|,$*
21 |
--------------------------------------------------------------------------------
/.github/workflows/build.yml:
--------------------------------------------------------------------------------
1 | name: Build
2 | on:
3 | push:
4 | branches:
5 | - develop
6 | - main
7 | pull_request:
8 | branches:
9 | - develop
10 | - main
11 | workflow_dispatch:
12 | jobs:
13 | build:
14 | name: Build
15 | runs-on: ubuntu-latest
16 | steps:
17 | - uses: actions/checkout@v3
18 | with:
19 | fetch-depth: 0 # Shallow clones should be disabled for a better relevancy of analysis
20 | - uses: actions/setup-java@v3
21 | with:
22 | distribution: 'zulu'
23 | java-version: '17'
24 | - name: Build and analyze
25 | env:
26 | GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} # Needed to get PR information, if any
27 | SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }}
28 | run: ./gradlew build sonarqube
29 |
--------------------------------------------------------------------------------
/sample/src/main/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
2 |
5 |
6 |
11 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
--------------------------------------------------------------------------------
/sample/build.gradle.kts:
--------------------------------------------------------------------------------
1 | plugins {
2 | id("com.android.application")
3 | id("kotlin-android")
4 | }
5 |
6 | android {
7 | compileSdk = 32
8 | defaultConfig {
9 | applicationId = "io.github.g00fy2.versioncomparesample"
10 | minSdk = 14
11 | targetSdk = 32
12 | versionCode = 1
13 | versionName = "1.0"
14 | }
15 | buildTypes {
16 | getByName("release") {
17 | isShrinkResources = true
18 | isMinifyEnabled = true
19 | proguardFiles(getDefaultProguardFile("proguard-android-optimize.txt"), "proguard-rules.pro")
20 | }
21 | }
22 | buildFeatures {
23 | viewBinding = true
24 | }
25 | compileOptions {
26 | sourceCompatibility = JavaVersion.VERSION_1_8
27 | targetCompatibility = JavaVersion.VERSION_1_8
28 | }
29 | kotlinOptions {
30 | jvmTarget = JavaVersion.VERSION_1_8.toString()
31 | }
32 | }
33 |
34 | tasks.lint {
35 | enabled = false
36 | }
37 |
38 | repositories {
39 | google()
40 | mavenCentral()
41 | }
42 |
43 | dependencies {
44 | implementation(project(":versioncompare"))
45 | }
--------------------------------------------------------------------------------
/versioncompare/src/test/java/io/github/g00fy2/versioncompare/VersionIsAtLeastIgnoreSuffixTest.java:
--------------------------------------------------------------------------------
1 | package io.github.g00fy2.versioncompare;
2 |
3 | import org.junit.Test;
4 | import org.junit.runner.RunWith;
5 | import org.junit.runners.Parameterized;
6 | import org.junit.runners.Parameterized.Parameters;
7 | import java.util.Arrays;
8 | import java.util.Collection;
9 |
10 | import static org.junit.Assert.assertTrue;
11 |
12 | @RunWith(Parameterized.class)
13 | public class VersionIsAtLeastIgnoreSuffixTest {
14 |
15 | @Parameters
16 | public static Collection