Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit c13d16a9 authored by Fahim Salam Chowdhury's avatar Fahim Salam Chowdhury 👽
Browse files

Merge branch 'upstream/master'

parents c6d5064f fad57503
Loading
Loading
Loading
Loading
+5 −5
Original line number Original line Diff line number Diff line
@@ -17,7 +17,7 @@ buildscript {
    }
    }


    dependencies {
    dependencies {
        classpath 'com.android.tools.build:gradle:7.2.2'
        classpath 'com.android.tools.build:gradle:7.3.0'
        classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:${versions.kotlin}"
        classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:${versions.kotlin}"
        classpath "org.jetbrains.dokka:dokka-gradle-plugin:${versions.dokka}"
        classpath "org.jetbrains.dokka:dokka-gradle-plugin:${versions.dokka}"
    }
    }
@@ -33,8 +33,8 @@ apply plugin: 'kotlin-android'
apply plugin: 'org.jetbrains.dokka'
apply plugin: 'org.jetbrains.dokka'


android {
android {
    compileSdkVersion 32
    compileSdkVersion 33
    buildToolsVersion '32.0.0'
    buildToolsVersion '33.0.0'


    defaultConfig {
    defaultConfig {
        minSdkVersion 21        // Android 5.0
        minSdkVersion 21        // Android 5.0
@@ -80,7 +80,7 @@ android {


dependencies {
dependencies {
    implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:${versions.kotlin}"
    implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:${versions.kotlin}"
    coreLibraryDesugaring 'com.android.tools:desugar_jdk_libs:1.1.6'
    coreLibraryDesugaring 'com.android.tools:desugar_jdk_libs:1.1.6'    // 2.0.0 produces "Unsupported desugared library configuration version, please upgrade the D8/R8 compiler."


    api("org.mnode.ical4j:ical4j:${versions.ical4j}") {
    api("org.mnode.ical4j:ical4j:${versions.ical4j}") {
        // exclude modules which are in conflict with system libraries
        // exclude modules which are in conflict with system libraries
@@ -100,7 +100,7 @@ dependencies {
    implementation "commons-io:commons-io:${versions.commonsIO}"
    implementation "commons-io:commons-io:${versions.commonsIO}"


    implementation 'org.slf4j:slf4j-jdk14:1.7.36'
    implementation 'org.slf4j:slf4j-jdk14:1.7.36'
    implementation 'androidx.core:core-ktx:1.8.0'
    implementation 'androidx.core:core-ktx:1.9.0'


    androidTestImplementation 'androidx.test:core:1.4.0'
    androidTestImplementation 'androidx.test:core:1.4.0'
    androidTestImplementation 'androidx.test:runner:1.4.0'
    androidTestImplementation 'androidx.test:runner:1.4.0'
+13 −0
Original line number Original line Diff line number Diff line
@@ -5,6 +5,7 @@
package at.bitfire.ical4android
package at.bitfire.ical4android


import net.fortuna.ical4j.model.DefaultTimeZoneRegistryFactory
import net.fortuna.ical4j.model.DefaultTimeZoneRegistryFactory
import net.fortuna.ical4j.model.TimeZone
import net.fortuna.ical4j.model.TimeZoneRegistry
import net.fortuna.ical4j.model.TimeZoneRegistry
import org.junit.Assert.*
import org.junit.Assert.*
import org.junit.Assume
import org.junit.Assume
@@ -41,6 +42,18 @@ class AndroidCompatTimeZoneRegistryTest {
        )
        )
    }
    }


    @Test
    fun getTimeZone_Existing_ButNotInIcal4j() {
        val reg = AndroidCompatTimeZoneRegistry(object: TimeZoneRegistry {
            override fun register(timezone: TimeZone?) = throw NotImplementedError()
            override fun register(timezone: TimeZone?, update: Boolean) = throw NotImplementedError()
            override fun clear() = throw NotImplementedError()
            override fun getTimeZone(id: String?) = null

        })
        assertNull(reg.getTimeZone("Europe/Berlin"))
    }

    @Test
    @Test
    fun getTimeZone_Existing_Kiev() {
    fun getTimeZone_Existing_Kiev() {
        Assume.assumeFalse(systemKnowsKyiv)
        Assume.assumeFalse(systemKnowsKyiv)
+3 −0
Original line number Original line Diff line number Diff line
@@ -21,6 +21,9 @@ class Css3ColorTest {
        // ARGB value
        // ARGB value
        assertEquals(0xffffff00.toInt(), Css3Color.colorFromString("#ffffff00"))
        assertEquals(0xffffff00.toInt(), Css3Color.colorFromString("#ffffff00"))


        // empty value
        assertNull(Css3Color.colorFromString(""))

        // invalid value
        // invalid value
        assertNull(Css3Color.colorFromString("DoesNotExist"))
        assertNull(Css3Color.colorFromString("DoesNotExist"))
    }
    }
+2 −2
Original line number Original line Diff line number Diff line
@@ -28,12 +28,12 @@ class Ical4jTest {
                        "BEGIN:VEVENT\n" +
                        "BEGIN:VEVENT\n" +
                        "SUMMARY:Test\n" +
                        "SUMMARY:Test\n" +
                        "DTSTART;VALUE=DATE:20200702\n" +
                        "DTSTART;VALUE=DATE:20200702\n" +
                        "ATTENDEE;EMAIL=attendee1@example.com:sample:attendee1\n" +
                        "ATTENDEE;EMAIL=attendee1@example.virtual:sample:attendee1\n" +
                        "END:VEVENT\n" +
                        "END:VEVENT\n" +
                        "END:VCALENDAR"
                        "END:VCALENDAR"
            )
            )
        ).first()
        ).first()
        assertEquals("attendee1@example.com", e.attendees.first.getParameter<Email>(Parameter.EMAIL).value)
        assertEquals("attendee1@example.virtual", e.attendees.first.getParameter<Email>(Parameter.EMAIL).value)
    }
    }


    @Test
    @Test
+8 −5
Original line number Original line Diff line number Diff line
@@ -109,7 +109,7 @@ class JtxICalObjectTest {
            this.dtstamp = System.currentTimeMillis()
            this.dtstamp = System.currentTimeMillis()
            this.sequence = 1
            this.sequence = 1
            this.color = -2298423
            this.color = -2298423
            this.dirty = false
            this.dirty = true
            this.deleted = false
            this.deleted = false
            this.fileName = "test.ics"
            this.fileName = "test.ics"
            this.eTag = "0"
            this.eTag = "0"
@@ -165,7 +165,6 @@ class JtxICalObjectTest {
    @Test fun check_SCHEDULETAG() = insertRetrieveAssertString(JtxICalObject.SCHEDULETAG, sample?.scheduleTag, Component.VJOURNAL.name)
    @Test fun check_SCHEDULETAG() = insertRetrieveAssertString(JtxICalObject.SCHEDULETAG, sample?.scheduleTag, Component.VJOURNAL.name)
    @Test fun check_FLAGS() = insertRetrieveAssertInt(JtxICalObject.FLAGS, sample?.flags, Component.VJOURNAL.name)
    @Test fun check_FLAGS() = insertRetrieveAssertInt(JtxICalObject.FLAGS, sample?.flags, Component.VJOURNAL.name)



    private fun insertRetrieveAssertString(field: String, fieldContent: String?, component: String) {
    private fun insertRetrieveAssertString(field: String, fieldContent: String?, component: String) {


        assertNotNull(fieldContent)    // fieldContent should not be null, check if the testcase was built correctly
        assertNotNull(fieldContent)    // fieldContent should not be null, check if the testcase was built correctly
@@ -184,8 +183,9 @@ class JtxICalObjectTest {
        }
        }
    }
    }


    private fun insertRetrieveAssertBoolean(field: String, fieldContent: Boolean?, component: String) {


    private fun insertRetrieveAssertBoolean(field: String, fieldContent: Boolean?, component: String) {
        // ATTENTION: getAsBoolean() should not be used as it would interpret "0" and "1" both as false for API-levels < 26
        assertNotNull(fieldContent)    // fieldContent should not be null, check if the testcase was built correctly
        assertNotNull(fieldContent)    // fieldContent should not be null, check if the testcase was built correctly


        val cv = ContentValues().apply {
        val cv = ContentValues().apply {
@@ -198,7 +198,9 @@ class JtxICalObjectTest {
            val itemCV = ContentValues()
            val itemCV = ContentValues()
            it.moveToFirst()
            it.moveToFirst()
            DatabaseUtils.cursorRowToContentValues(it, itemCV)
            DatabaseUtils.cursorRowToContentValues(it, itemCV)
            assertEquals(fieldContent, itemCV.getAsBoolean(field))
            val retrievedFieldContent = itemCV.getAsString(field)
            val retrievedFieldBoolean = retrievedFieldContent == "1" || retrievedFieldContent == "true"
            assertEquals(fieldContent, retrievedFieldBoolean)
        }
        }
    }
    }


@@ -381,7 +383,8 @@ class JtxICalObjectTest {
            assertEquals(attendee.member, retrievedAttendeeCV.getAsString(JtxContract.JtxAttendee.MEMBER))
            assertEquals(attendee.member, retrievedAttendeeCV.getAsString(JtxContract.JtxAttendee.MEMBER))
            assertEquals(attendee.partstat, retrievedAttendeeCV.getAsString(JtxContract.JtxAttendee.PARTSTAT))
            assertEquals(attendee.partstat, retrievedAttendeeCV.getAsString(JtxContract.JtxAttendee.PARTSTAT))
            assertEquals(attendee.role, retrievedAttendeeCV.getAsString(JtxContract.JtxAttendee.ROLE))
            assertEquals(attendee.role, retrievedAttendeeCV.getAsString(JtxContract.JtxAttendee.ROLE))
            assertEquals(attendee.rsvp, retrievedAttendeeCV.getAsBoolean(JtxContract.JtxAttendee.RSVP))
            assertEquals(attendee.rsvp, retrievedAttendeeCV.getAsString(JtxContract.JtxAttendee.RSVP) == "1"
                    || retrievedAttendeeCV.getAsString(JtxContract.JtxAttendee.RSVP) == "true")
            assertEquals(attendee.delegatedfrom, retrievedAttendeeCV.getAsString(JtxContract.JtxAttendee.DELEGATEDFROM))
            assertEquals(attendee.delegatedfrom, retrievedAttendeeCV.getAsString(JtxContract.JtxAttendee.DELEGATEDFROM))
            assertEquals(attendee.delegatedto, retrievedAttendeeCV.getAsString(JtxContract.JtxAttendee.DELEGATEDTO))
            assertEquals(attendee.delegatedto, retrievedAttendeeCV.getAsString(JtxContract.JtxAttendee.DELEGATEDTO))
            assertEquals(attendee.sentby, retrievedAttendeeCV.getAsString(JtxContract.JtxAttendee.SENTBY))
            assertEquals(attendee.sentby, retrievedAttendeeCV.getAsString(JtxContract.JtxAttendee.SENTBY))
Loading