diff --git a/app/build.gradle.kts b/app/build.gradle.kts
index ac532a1d7cf3efc768aefe4244c53aba42387d91..4ef254b4bac148296dc97fdcc50dd650dbebb4dd 100644
--- a/app/build.gradle.kts
+++ b/app/build.gradle.kts
@@ -158,11 +158,11 @@ dependencies {
     implementation(libs.commonutils)
 
 
-//    testImplementation("junit:junit:4.13.2")
+    testImplementation("junit:junit:4.13.2")
 //    androidTestImplementation("androidx.test.ext:junit:1.1.5")
 //    androidTestImplementation("androidx.test.espresso:espresso-core:3.5.1")
 //    androidTestImplementation(platform("androidx.compose:compose-bom:2023.10.01"))
 //    androidTestImplementation("androidx.compose.ui:ui-test-junit4")
-//    debugImplementation("androidx.compose.ui:ui-tooling")
-//    debugImplementation("androidx.compose.ui:ui-test-manifest")
+    debugImplementation("androidx.compose.ui:ui-tooling")
+    debugImplementation("androidx.compose.ui:ui-test-manifest")
 }
\ No newline at end of file
diff --git a/app/src/main/java/net/novagamestudios/kaffeekasse/model/app/AppVersion.kt b/app/src/main/java/net/novagamestudios/kaffeekasse/model/app/AppVersion.kt
index 80e89e4112f64b99b8bced3f2592f01dfdb12fed..aaa951c0ac14d6fa232cf8541a004350cc8ec296 100644
--- a/app/src/main/java/net/novagamestudios/kaffeekasse/model/app/AppVersion.kt
+++ b/app/src/main/java/net/novagamestudios/kaffeekasse/model/app/AppVersion.kt
@@ -8,6 +8,7 @@ import kotlinx.serialization.descriptors.PrimitiveSerialDescriptor
 import kotlinx.serialization.descriptors.SerialDescriptor
 import kotlinx.serialization.encoding.Decoder
 import kotlinx.serialization.encoding.Encoder
+import net.novagamestudios.common_utils.format
 import net.novagamestudios.kaffeekasse.BuildConfig
 
 
@@ -38,11 +39,11 @@ data class AppVersion(
 
     override fun toString(): String = listOfNotNull(
         "$major.$minor.$patch",
-        if (type == Type.Stable) null else "$type$iteration"
+        if (type == Type.Stable) null else "$type${iteration format "%02d"}"
     ).joinToString("-")
 
     companion object {
-        private val Regex by lazy { """(\d+)\.(\d+)\.(\d+)(-(\w+)(\d+))?""".toRegex() }
+        private val Regex by lazy { """(\d+)\.(\d+)\.(\d+)(-([A-Za-z]+)(\d+)?)?""".toRegex() }
 
         operator fun invoke(string: String): AppVersion? {
             val match = Regex.matchEntire(string) ?: return null
diff --git a/app/src/test/kotlin/net/novagamestudios/kaffeekasse/model/app/AppVersionTest.kt b/app/src/test/kotlin/net/novagamestudios/kaffeekasse/model/app/AppVersionTest.kt
new file mode 100644
index 0000000000000000000000000000000000000000..59d656917531ae81a99075537dbab6915ea73f4c
--- /dev/null
+++ b/app/src/test/kotlin/net/novagamestudios/kaffeekasse/model/app/AppVersionTest.kt
@@ -0,0 +1,92 @@
+package net.novagamestudios.kaffeekasse.model.app.net.novagamestudios.kaffeekasse.model.app
+
+import net.novagamestudios.kaffeekasse.model.app.AppVersion
+import org.junit.Assert
+import org.junit.Test
+
+class AppVersionTest {
+    @Test
+    fun stringParsingValid() {
+        Assert.assertEquals(AppVersion(1, 2, 3, AppVersion.Type.Stable, 0), AppVersion("1.2.3"))
+        Assert.assertEquals(AppVersion(1, 2, 3, AppVersion.Type.Beta, 0), AppVersion("1.2.3-beta"))
+        Assert.assertEquals(AppVersion(1, 2, 3, AppVersion.Type.Beta, 1), AppVersion("1.2.3-beta1"))
+        Assert.assertEquals(AppVersion(1, 2, 3, AppVersion.Type.Beta, 1), AppVersion("1.2.3-beta01"))
+        Assert.assertEquals(AppVersion(1, 2, 3, AppVersion.Type.Alpha, 0), AppVersion("1.2.3-alpha"))
+        Assert.assertEquals(AppVersion(1, 2, 3, AppVersion.Type.Alpha, 1), AppVersion("1.2.3-alpha1"))
+        Assert.assertEquals(AppVersion(1, 2, 3, AppVersion.Type.Alpha, 1), AppVersion("1.2.3-alpha01"))
+    }
+    @Test
+    fun stringParsingInvalid() {
+        Assert.assertNull(AppVersion(""))
+        Assert.assertNull(AppVersion("1.2"))
+        Assert.assertNull(AppVersion("1.2.3-"))
+        Assert.assertNull(AppVersion("1.2.3-1"))
+        Assert.assertNull(AppVersion("1.2.3-01"))
+        Assert.assertNull(AppVersion("1.2.3-unknown"))
+        Assert.assertNull(AppVersion("1.2.3-unknown1"))
+        Assert.assertNull(AppVersion("1.2.3-unknown01"))
+    }
+    @Test
+    fun stringFindingValid() {
+        Assert.assertEquals(AppVersion(1, 2, 3, AppVersion.Type.Stable, 0), AppVersion.findIn("version 1.2.3 "))
+        Assert.assertEquals(AppVersion(1, 2, 3, AppVersion.Type.Stable, 0), AppVersion.findIn("version 1.2.3-1"))
+        Assert.assertEquals(AppVersion(1, 2, 3, AppVersion.Type.Stable, 0), AppVersion.findIn("version 1.2.3 -unknown"))
+        Assert.assertEquals(AppVersion(1, 2, 3, AppVersion.Type.Stable, 0), AppVersion.findIn("version 1.2.3 -unknown1"))
+        Assert.assertEquals(AppVersion(1, 2, 3, AppVersion.Type.Stable, 0), AppVersion.findIn("version 1.2.3 -unknown01"))
+        Assert.assertEquals(AppVersion(1, 2, 3, AppVersion.Type.Beta, 0), AppVersion.findIn("version 1.2.3-beta "))
+        Assert.assertEquals(AppVersion(1, 2, 3, AppVersion.Type.Beta, 1), AppVersion.findIn("version 1.2.3-beta1 "))
+        Assert.assertEquals(AppVersion(1, 2, 3, AppVersion.Type.Beta, 1), AppVersion.findIn("version 1.2.3-beta01 "))
+        Assert.assertEquals(AppVersion(1, 2, 3, AppVersion.Type.Alpha, 0), AppVersion.findIn("version 1.2.3-alpha "))
+        Assert.assertEquals(AppVersion(1, 2, 3, AppVersion.Type.Alpha, 1), AppVersion.findIn("version 1.2.3-alpha1 "))
+        Assert.assertEquals(AppVersion(1, 2, 3, AppVersion.Type.Alpha, 1), AppVersion.findIn("version 1.2.3-alpha01 "))
+    }
+    @Test
+    fun stringFindingInvalid() {
+        Assert.assertNull(AppVersion.findIn(""))
+        Assert.assertNull(AppVersion.findIn("version 1.2 "))
+        Assert.assertNull(AppVersion.findIn("version 1.2.3-unknown "))
+    }
+    @Test
+    fun stringFormatting() {
+        Assert.assertEquals("1.2.3", AppVersion(1, 2, 3, AppVersion.Type.Stable, 0).toString())
+        Assert.assertEquals("1.2.3-beta00", AppVersion(1, 2, 3, AppVersion.Type.Beta, 0).toString())
+        Assert.assertEquals("1.2.3-beta01", AppVersion(1, 2, 3, AppVersion.Type.Beta, 1).toString())
+        Assert.assertEquals("1.2.3-alpha00", AppVersion(1, 2, 3, AppVersion.Type.Alpha, 0).toString())
+        Assert.assertEquals("1.2.3-alpha01", AppVersion(1, 2, 3, AppVersion.Type.Alpha, 1).toString())
+    }
+    @Test
+    fun comparison() {
+        val list = listOf(
+            AppVersion(1, 2, 3, AppVersion.Type.Alpha, 0),
+            AppVersion(1, 2, 3, AppVersion.Type.Alpha, 1),
+            AppVersion(1, 2, 3, AppVersion.Type.Beta, 0),
+            AppVersion(1, 2, 3, AppVersion.Type.Beta, 1),
+            AppVersion(1, 2, 3, AppVersion.Type.Stable, 0),
+            AppVersion(1, 2, 4, AppVersion.Type.Stable, 0),
+            AppVersion(1, 3, 3, AppVersion.Type.Stable, 0),
+            AppVersion(2, 2, 3, AppVersion.Type.Stable, 0),
+        )
+        for (i in list.indices) {
+            for (j in list.indices) {
+                if (i < j) {
+                    assert(list[i] < list[j])
+                    assert(list[j] > list[i])
+                    assert(list[i] <= list[j])
+                    assert(list[j] >= list[i])
+                } else if (i == j) {
+                    assert(list[i] == list[j])
+                    assert(list[j] == list[i])
+                    assert(list[i] <= list[j])
+                    assert(list[j] <= list[i])
+                    assert(list[i] >= list[j])
+                    assert(list[j] >= list[i])
+                } else {
+                    assert(list[i] > list[j])
+                    assert(list[j] < list[i])
+                    assert(list[i] >= list[j])
+                    assert(list[j] <= list[i])
+                }
+            }
+        }
+    }
+}
\ No newline at end of file