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

Commit d19afe96 authored by Brian Stack's avatar Brian Stack Committed by Automerger Merge Worker
Browse files

Merge "Move UWB Tests to CTS" am: 5467048b am: 09b13e4e am: 0b703f76 am: b44f4619

Original change: https://android-review.googlesource.com/c/platform/frameworks/base/+/1584207

MUST ONLY BE SUBMITTED BY AUTOMERGER

Change-Id: I09bf5b8685cc43e62c87fa3bef6fd7fa47fb4021
parents 819a39e8 b44f4619
Loading
Loading
Loading
Loading
+4 −1
Original line number Diff line number Diff line
@@ -2,6 +2,9 @@
  "presubmit": [
    {
      "name": "UwbManagerTests"
    },
    {
      "name": "CtsUwbTestCases"
    }
  ]
}
+0 −85
Original line number Diff line number Diff line
/*
 * Copyright 2020 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 android.uwb;

import static org.junit.Assert.assertEquals;
import static org.junit.Assert.fail;

import android.os.Parcel;

import androidx.test.ext.junit.runners.AndroidJUnit4;
import androidx.test.filters.SmallTest;

import org.junit.Test;
import org.junit.runner.RunWith;

/**
 * Test of {@link AngleMeasurement}.
 */
@SmallTest
@RunWith(AndroidJUnit4.class)
public class AngleMeasurementTest {
    private static final double EPSILON = 0.00000000001;

    @Test
    public void testBuilder() {
        double radians = 0.1234;
        double errorRadians = 0.5678;
        double confidence = 0.5;

        AngleMeasurement.Builder builder = new AngleMeasurement.Builder();
        tryBuild(builder, false);

        builder.setRadians(radians);
        tryBuild(builder, false);

        builder.setErrorRadians(errorRadians);
        tryBuild(builder, false);

        builder.setConfidenceLevel(confidence);
        AngleMeasurement measurement = tryBuild(builder, true);

        assertEquals(measurement.getRadians(), radians, 0);
        assertEquals(measurement.getErrorRadians(), errorRadians, 0);
        assertEquals(measurement.getConfidenceLevel(), confidence, 0);
    }

    private AngleMeasurement tryBuild(AngleMeasurement.Builder builder, boolean expectSuccess) {
        AngleMeasurement measurement = null;
        try {
            measurement = builder.build();
            if (!expectSuccess) {
                fail("Expected AngleMeasurement.Builder.build() to fail, but it succeeded");
            }
        } catch (IllegalStateException e) {
            if (expectSuccess) {
                fail("Expected AngleMeasurement.Builder.build() to succeed, but it failed");
            }
        }
        return measurement;
    }

    @Test
    public void testParcel() {
        Parcel parcel = Parcel.obtain();
        AngleMeasurement measurement = UwbTestUtils.getAngleMeasurement();
        measurement.writeToParcel(parcel, 0);
        parcel.setDataPosition(0);
        AngleMeasurement fromParcel = AngleMeasurement.CREATOR.createFromParcel(parcel);
        assertEquals(measurement, fromParcel);
    }
}
+0 −89
Original line number Diff line number Diff line
/*
 * Copyright 2020 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 android.uwb;

import static org.junit.Assert.assertEquals;
import static org.junit.Assert.fail;

import android.os.Parcel;

import androidx.test.ext.junit.runners.AndroidJUnit4;
import androidx.test.filters.SmallTest;

import org.junit.Test;
import org.junit.runner.RunWith;

/**
 * Test of {@link AngleOfArrivalMeasurement}.
 */
@SmallTest
@RunWith(AndroidJUnit4.class)
public class AngleOfArrivalMeasurementTest {

    @Test
    public void testBuilder() {
        AngleMeasurement azimuth = UwbTestUtils.getAngleMeasurement();
        AngleMeasurement altitude = UwbTestUtils.getAngleMeasurement();

        AngleOfArrivalMeasurement.Builder builder = new AngleOfArrivalMeasurement.Builder();
        tryBuild(builder, false);

        builder.setAltitude(altitude);
        tryBuild(builder, false);

        builder.setAzimuth(azimuth);
        AngleOfArrivalMeasurement measurement = tryBuild(builder, true);

        assertEquals(azimuth, measurement.getAzimuth());
        assertEquals(altitude, measurement.getAltitude());
    }

    private AngleMeasurement getAngleMeasurement(double radian, double error, double confidence) {
        return new AngleMeasurement.Builder()
                .setRadians(radian)
                .setErrorRadians(error)
                .setConfidenceLevel(confidence)
                .build();
    }

    private AngleOfArrivalMeasurement tryBuild(AngleOfArrivalMeasurement.Builder builder,
            boolean expectSuccess) {
        AngleOfArrivalMeasurement measurement = null;
        try {
            measurement = builder.build();
            if (!expectSuccess) {
                fail("Expected AngleOfArrivalMeasurement.Builder.build() to fail");
            }
        } catch (IllegalStateException e) {
            if (expectSuccess) {
                fail("Expected AngleOfArrivalMeasurement.Builder.build() to succeed");
            }
        }
        return measurement;
    }

    @Test
    public void testParcel() {
        Parcel parcel = Parcel.obtain();
        AngleOfArrivalMeasurement measurement = UwbTestUtils.getAngleOfArrivalMeasurement();
        measurement.writeToParcel(parcel, 0);
        parcel.setDataPosition(0);
        AngleOfArrivalMeasurement fromParcel =
                AngleOfArrivalMeasurement.CREATOR.createFromParcel(parcel);
        assertEquals(measurement, fromParcel);
    }
}
+0 −87
Original line number Diff line number Diff line
/*
 * Copyright 2020 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 android.uwb;

import static org.junit.Assert.assertEquals;
import static org.junit.Assert.fail;

import android.os.Parcel;

import androidx.test.ext.junit.runners.AndroidJUnit4;
import androidx.test.filters.SmallTest;

import org.junit.Test;
import org.junit.runner.RunWith;

/**
 * Test of {@link DistanceMeasurement}.
 */
@SmallTest
@RunWith(AndroidJUnit4.class)
public class DistanceMeasurementTest {
    private static final double EPSILON = 0.00000000001;

    @Test
    public void testBuilder() {
        double meters = 0.12;
        double error = 0.54;
        double confidence = 0.99;

        DistanceMeasurement.Builder builder = new DistanceMeasurement.Builder();
        tryBuild(builder, false);

        builder.setMeters(meters);
        tryBuild(builder, false);

        builder.setErrorMeters(error);
        tryBuild(builder, false);

        builder.setConfidenceLevel(confidence);
        DistanceMeasurement measurement = tryBuild(builder, true);

        assertEquals(meters, measurement.getMeters(), 0);
        assertEquals(error, measurement.getErrorMeters(), 0);
        assertEquals(confidence, measurement.getConfidenceLevel(), 0);
    }

    private DistanceMeasurement tryBuild(DistanceMeasurement.Builder builder,
            boolean expectSuccess) {
        DistanceMeasurement measurement = null;
        try {
            measurement = builder.build();
            if (!expectSuccess) {
                fail("Expected DistanceMeasurement.Builder.build() to fail");
            }
        } catch (IllegalStateException e) {
            if (expectSuccess) {
                fail("Expected DistanceMeasurement.Builder.build() to succeed");
            }
        }
        return measurement;
    }

    @Test
    public void testParcel() {
        Parcel parcel = Parcel.obtain();
        DistanceMeasurement measurement = UwbTestUtils.getDistanceMeasurement();
        measurement.writeToParcel(parcel, 0);
        parcel.setDataPosition(0);
        DistanceMeasurement fromParcel =
                DistanceMeasurement.CREATOR.createFromParcel(parcel);
        assertEquals(measurement, fromParcel);
    }
}
+0 −95
Original line number Diff line number Diff line
/*
 * Copyright 2020 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 android.uwb;

import static org.junit.Assert.assertEquals;
import static org.junit.Assert.fail;

import android.os.Parcel;
import android.os.SystemClock;

import androidx.test.ext.junit.runners.AndroidJUnit4;
import androidx.test.filters.SmallTest;

import org.junit.Test;
import org.junit.runner.RunWith;

/**
 * Test of {@link RangingMeasurement}.
 */
@SmallTest
@RunWith(AndroidJUnit4.class)
public class RangingMeasurementTest {

    @Test
    public void testBuilder() {
        int status = RangingMeasurement.RANGING_STATUS_SUCCESS;
        UwbAddress address = UwbTestUtils.getUwbAddress(false);
        long time = SystemClock.elapsedRealtimeNanos();
        AngleOfArrivalMeasurement angleMeasurement = UwbTestUtils.getAngleOfArrivalMeasurement();
        DistanceMeasurement distanceMeasurement = UwbTestUtils.getDistanceMeasurement();

        RangingMeasurement.Builder builder = new RangingMeasurement.Builder();

        builder.setStatus(status);
        tryBuild(builder, false);

        builder.setElapsedRealtimeNanos(time);
        tryBuild(builder, false);

        builder.setAngleOfArrivalMeasurement(angleMeasurement);
        tryBuild(builder, false);

        builder.setDistanceMeasurement(distanceMeasurement);
        tryBuild(builder, false);

        builder.setRemoteDeviceAddress(address);
        RangingMeasurement measurement = tryBuild(builder, true);

        assertEquals(status, measurement.getStatus());
        assertEquals(address, measurement.getRemoteDeviceAddress());
        assertEquals(time, measurement.getElapsedRealtimeNanos());
        assertEquals(angleMeasurement, measurement.getAngleOfArrivalMeasurement());
        assertEquals(distanceMeasurement, measurement.getDistanceMeasurement());
    }

    private RangingMeasurement tryBuild(RangingMeasurement.Builder builder,
            boolean expectSuccess) {
        RangingMeasurement measurement = null;
        try {
            measurement = builder.build();
            if (!expectSuccess) {
                fail("Expected RangingMeasurement.Builder.build() to fail");
            }
        } catch (IllegalStateException e) {
            if (expectSuccess) {
                fail("Expected DistanceMeasurement.Builder.build() to succeed");
            }
        }
        return measurement;
    }

    @Test
    public void testParcel() {
        Parcel parcel = Parcel.obtain();
        RangingMeasurement measurement = UwbTestUtils.getRangingMeasurement();
        measurement.writeToParcel(parcel, 0);
        parcel.setDataPosition(0);
        RangingMeasurement fromParcel = RangingMeasurement.CREATOR.createFromParcel(parcel);
        assertEquals(measurement, fromParcel);
    }
}
Loading