# Oboe Unit Tests

This directory contains the Oboe unit tests. They are run using the bash script `run_tests.sh`. 

The basic operation is:

1. Connect an Android device or start the Android emulator
2. Open a terminal window and execute `run_tests.sh`

## Prerequisites/caveats

You must have compiled and executed one of the Oboe examples or OboeTester. That ensures that the NDK and cmake is installed.

You must define `ANDROID_NDK` as an environment variable and make sure `cmake` is on your path.

To test this on Mac or Linux enter:

    echo $ANDROID_HOME
    echo $ANDROID_NDK
    cmake --version

They may already be set. If not, then this may work on Mac OS:

    export ANDROID_HOME=$HOME/Library/Android/sdk
    
or this may work on Linux:

    export ANDROID_HOME=$HOME/Android/Sdk
    
Now we need to determine the latest installed version of the NDK. Enter:
    
    ls $ANDROID_HOME/ndk
    
Make note of the folder name. Mine was "21.3.6528147" so I entered:

    export ANDROID_NDK=$ANDROID_HOME/ndk/21.3.6528147/

If you need to add `cmake` to your path then you can find it by entering:

    ls $ANDROID_HOME/cmake
    
Make note of the folder name. Mine was "3.10.2.4988404" so I entered:
    
    export PATH=$PATH:$ANDROID_HOME/cmake/3.10.2.4988404/bin
    cmake --version
    
## Running the Tests

To run the tests, enter:

    cd tests
    ./run_tests.sh
    
You may need to enter \ to exit the script.

If you get this error:

    com.android.builder.testing.api.DeviceException: com.android.ddmlib.InstallException:
        INSTALL_FAILED_UPDATE_INCOMPATIBLE: Package com.google.oboe.tests.unittestrunner
        signatures do not match previously installed version; ignoring!

then uninstall the app "UnitTestRunner" from the Android device.

See `run_tests.sh` for more documentation