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

Commit 967dd545 authored by Andrew Cole's avatar Andrew Cole
Browse files

First Unit Tests for Utilities.java

Writing some initial unit tests for Utilities.java to get others started so they can easily add to the party.

Bug: 297950111
Test: Self
Flag: TEST_ONLY
Change-Id: I3323e6483790e2c2fbbd5c8db0281802abf0749b
parent 821fac01
Loading
Loading
Loading
Loading
+97 −0
Original line number Diff line number Diff line
/*
 * Copyright (C) 2024 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.launcher3

import android.content.Context
import android.view.View
import android.view.ViewGroup
import androidx.test.core.app.ApplicationProvider.getApplicationContext
import androidx.test.ext.junit.runners.AndroidJUnit4
import com.android.launcher3.util.ActivityContextWrapper
import org.junit.Assert.*
import org.junit.Before
import org.junit.Test
import org.junit.runner.RunWith

@RunWith(AndroidJUnit4::class)
class UtilitiesTest {

    private lateinit var mContext: Context

    @Before
    fun setUp() {
        mContext = ActivityContextWrapper(getApplicationContext())
    }

    @Test
    fun testIsPropertyEnabled() {
        // This assumes the property "propertyName" is not enabled by default
        assertFalse(Utilities.isPropertyEnabled("propertyName"))
    }

    @Test
    fun testGetDescendantCoordRelativeToAncestor() {
        val ancestor =
            object : ViewGroup(mContext) {
                override fun onLayout(changed: Boolean, l: Int, t: Int, r: Int, b: Int) {}
            }
        val descendant = View(mContext)

        descendant.x = 50f
        descendant.y = 30f
        descendant.scaleX = 2f
        descendant.scaleY = 2f

        ancestor.addView(descendant)

        val coord = floatArrayOf(10f, 15f)
        val scale =
            Utilities.getDescendantCoordRelativeToAncestor(descendant, ancestor, coord, false)

        assertEquals(2f, scale) // Expecting scale to be 2f
        assertEquals(70f, coord[0])
        assertEquals(60f, coord[1])
    }

    @Test
    fun testRoundArray() {
        val floatArray = floatArrayOf(1.2f, 3.7f, 5.5f)
        val intArray = IntArray(3)
        Utilities.roundArray(floatArray, intArray)
        assertArrayEquals(intArrayOf(1, 4, 6), intArray)
    }

    @Test
    fun testOffsetPoints() {
        val points = floatArrayOf(1f, 2f, 3f, 4f)
        Utilities.offsetPoints(points, 5f, 6f)

        val expected = listOf(6f, 8f, 8f, 10f)
        assertEquals(expected, points.toList())
    }

    @Test
    fun testPointInView() {
        val view = View(mContext)
        view.layout(0, 0, 100, 100)

        assertTrue(Utilities.pointInView(view, 50f, 50f, 0f)) // Inside view
        assertFalse(Utilities.pointInView(view, -10f, -10f, 0f)) // Outside view
        assertTrue(Utilities.pointInView(view, -5f, -5f, 10f)) // Inside slop
        assertFalse(Utilities.pointInView(view, 115f, 115f, 10f)) // Outside slop
    }
}