11402fbb13523fed9d96217e801df5678e3c01a6bCalin Juravle/*
21402fbb13523fed9d96217e801df5678e3c01a6bCalin Juravle * Copyright (C) 2014 The Android Open Source Project
31402fbb13523fed9d96217e801df5678e3c01a6bCalin Juravle *
41402fbb13523fed9d96217e801df5678e3c01a6bCalin Juravle * Licensed under the Apache License, Version 2.0 (the "License");
51402fbb13523fed9d96217e801df5678e3c01a6bCalin Juravle * you may not use this file except in compliance with the License.
61402fbb13523fed9d96217e801df5678e3c01a6bCalin Juravle * You may obtain a copy of the License at
71402fbb13523fed9d96217e801df5678e3c01a6bCalin Juravle *
81402fbb13523fed9d96217e801df5678e3c01a6bCalin Juravle *      http://www.apache.org/licenses/LICENSE-2.0
91402fbb13523fed9d96217e801df5678e3c01a6bCalin Juravle *
101402fbb13523fed9d96217e801df5678e3c01a6bCalin Juravle * Unless required by applicable law or agreed to in writing, software
111402fbb13523fed9d96217e801df5678e3c01a6bCalin Juravle * distributed under the License is distributed on an "AS IS" BASIS,
121402fbb13523fed9d96217e801df5678e3c01a6bCalin Juravle * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
131402fbb13523fed9d96217e801df5678e3c01a6bCalin Juravle * See the License for the specific language governing permissions and
141402fbb13523fed9d96217e801df5678e3c01a6bCalin Juravle * limitations under the License.
151402fbb13523fed9d96217e801df5678e3c01a6bCalin Juravle */
161402fbb13523fed9d96217e801df5678e3c01a6bCalin Juravle
171402fbb13523fed9d96217e801df5678e3c01a6bCalin Juravle#include "NativeBridgeTest.h"
181402fbb13523fed9d96217e801df5678e3c01a6bCalin Juravle
199ef4fa4c2c4f6bece351a855f53b2270f218389cCalin Juravle#include <unistd.h>
209ef4fa4c2c4f6bece351a855f53b2270f218389cCalin Juravle
211402fbb13523fed9d96217e801df5678e3c01a6bCalin Juravlenamespace android {
221402fbb13523fed9d96217e801df5678e3c01a6bCalin Juravle
231402fbb13523fed9d96217e801df5678e3c01a6bCalin JuravleTEST_F(NativeBridgeTest, CompleteFlow) {
241402fbb13523fed9d96217e801df5678e3c01a6bCalin Juravle    // Init
251402fbb13523fed9d96217e801df5678e3c01a6bCalin Juravle    ASSERT_TRUE(LoadNativeBridge(kNativeBridgeLibrary, nullptr));
261402fbb13523fed9d96217e801df5678e3c01a6bCalin Juravle    ASSERT_TRUE(NativeBridgeAvailable());
271402fbb13523fed9d96217e801df5678e3c01a6bCalin Juravle    ASSERT_TRUE(PreInitializeNativeBridge(".", "isa"));
281402fbb13523fed9d96217e801df5678e3c01a6bCalin Juravle    ASSERT_TRUE(NativeBridgeAvailable());
291402fbb13523fed9d96217e801df5678e3c01a6bCalin Juravle    ASSERT_TRUE(InitializeNativeBridge(nullptr, nullptr));
301402fbb13523fed9d96217e801df5678e3c01a6bCalin Juravle    ASSERT_TRUE(NativeBridgeAvailable());
311402fbb13523fed9d96217e801df5678e3c01a6bCalin Juravle
321402fbb13523fed9d96217e801df5678e3c01a6bCalin Juravle    // Basic calls to check that nothing crashes
331402fbb13523fed9d96217e801df5678e3c01a6bCalin Juravle    ASSERT_FALSE(NativeBridgeIsSupported(nullptr));
341402fbb13523fed9d96217e801df5678e3c01a6bCalin Juravle    ASSERT_EQ(nullptr, NativeBridgeLoadLibrary(nullptr, 0));
351402fbb13523fed9d96217e801df5678e3c01a6bCalin Juravle    ASSERT_EQ(nullptr, NativeBridgeGetTrampoline(nullptr, nullptr, nullptr, 0));
361402fbb13523fed9d96217e801df5678e3c01a6bCalin Juravle
371402fbb13523fed9d96217e801df5678e3c01a6bCalin Juravle    // Unload
381402fbb13523fed9d96217e801df5678e3c01a6bCalin Juravle    UnloadNativeBridge();
39f9d9e2a2d96559c3165405d572b08e260156074aCalin Juravle
409ef4fa4c2c4f6bece351a855f53b2270f218389cCalin Juravle    ASSERT_FALSE(NativeBridgeAvailable());
411402fbb13523fed9d96217e801df5678e3c01a6bCalin Juravle    ASSERT_FALSE(NativeBridgeError());
429ef4fa4c2c4f6bece351a855f53b2270f218389cCalin Juravle
439ef4fa4c2c4f6bece351a855f53b2270f218389cCalin Juravle    // Clean-up code_cache
449ef4fa4c2c4f6bece351a855f53b2270f218389cCalin Juravle    ASSERT_EQ(0, rmdir(kCodeCache));
451402fbb13523fed9d96217e801df5678e3c01a6bCalin Juravle}
461402fbb13523fed9d96217e801df5678e3c01a6bCalin Juravle
471402fbb13523fed9d96217e801df5678e3c01a6bCalin Juravle}  // namespace android
48