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

Commit 5467048b authored by Brian Stack's avatar Brian Stack Committed by Gerrit Code Review
Browse files

Merge "Move UWB Tests to CTS"

parents e06165a2 996b7150
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