1eab33fc589a8e1ca04f5703b5f1ace69f8ff9aeaIgor Murashkin/*
2eab33fc589a8e1ca04f5703b5f1ace69f8ff9aeaIgor Murashkin * Copyright (C) 2012 The Android Open Source Project
3eab33fc589a8e1ca04f5703b5f1ace69f8ff9aeaIgor Murashkin *
4eab33fc589a8e1ca04f5703b5f1ace69f8ff9aeaIgor Murashkin * Licensed under the Apache License, Version 2.0 (the "License");
5eab33fc589a8e1ca04f5703b5f1ace69f8ff9aeaIgor Murashkin * you may not use this file except in compliance with the License.
6eab33fc589a8e1ca04f5703b5f1ace69f8ff9aeaIgor Murashkin * You may obtain a copy of the License at
7eab33fc589a8e1ca04f5703b5f1ace69f8ff9aeaIgor Murashkin *
8eab33fc589a8e1ca04f5703b5f1ace69f8ff9aeaIgor Murashkin *      http://www.apache.org/licenses/LICENSE-2.0
9eab33fc589a8e1ca04f5703b5f1ace69f8ff9aeaIgor Murashkin *
10eab33fc589a8e1ca04f5703b5f1ace69f8ff9aeaIgor Murashkin * Unless required by applicable law or agreed to in writing, software
11eab33fc589a8e1ca04f5703b5f1ace69f8ff9aeaIgor Murashkin * distributed under the License is distributed on an "AS IS" BASIS,
12eab33fc589a8e1ca04f5703b5f1ace69f8ff9aeaIgor Murashkin * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13eab33fc589a8e1ca04f5703b5f1ace69f8ff9aeaIgor Murashkin * See the License for the specific language governing permissions and
14eab33fc589a8e1ca04f5703b5f1ace69f8ff9aeaIgor Murashkin * limitations under the License.
15eab33fc589a8e1ca04f5703b5f1ace69f8ff9aeaIgor Murashkin */
16eab33fc589a8e1ca04f5703b5f1ace69f8ff9aeaIgor Murashkin
17eab33fc589a8e1ca04f5703b5f1ace69f8ff9aeaIgor Murashkin#ifndef __ANDROID_HAL_CAMERA2_TESTS_EXTENSIONS__
18eab33fc589a8e1ca04f5703b5f1ace69f8ff9aeaIgor Murashkin#define __ANDROID_HAL_CAMERA2_TESTS_EXTENSIONS__
19eab33fc589a8e1ca04f5703b5f1ace69f8ff9aeaIgor Murashkin
20eab33fc589a8e1ca04f5703b5f1ace69f8ff9aeaIgor Murashkin#include "TestForkerEventListener.h"
2100b597f428ddb584a8251cd030cb8e3547ee869dIgor Murashkin#include "TestSettings.h"
22eab33fc589a8e1ca04f5703b5f1ace69f8ff9aeaIgor Murashkin
23eab33fc589a8e1ca04f5703b5f1ace69f8ff9aeaIgor Murashkin// Use at the beginning of each Test::SetUp() impl
24eab33fc589a8e1ca04f5703b5f1ace69f8ff9aeaIgor Murashkin#define TEST_EXTENSION_FORKING_SET_UP                                       \
25eab33fc589a8e1ca04f5703b5f1ace69f8ff9aeaIgor Murashkin    do {                                                                    \
26eab33fc589a8e1ca04f5703b5f1ace69f8ff9aeaIgor Murashkin        if (TEST_EXTENSION_FORKING_ENABLED) {                               \
27eab33fc589a8e1ca04f5703b5f1ace69f8ff9aeaIgor Murashkin            if (!TestForkerEventListener::mIsForked) {                      \
28eab33fc589a8e1ca04f5703b5f1ace69f8ff9aeaIgor Murashkin                return;                                                     \
29eab33fc589a8e1ca04f5703b5f1ace69f8ff9aeaIgor Murashkin            }                                                               \
30eab33fc589a8e1ca04f5703b5f1ace69f8ff9aeaIgor Murashkin        }                                                                   \
31eab33fc589a8e1ca04f5703b5f1ace69f8ff9aeaIgor Murashkin    } while (false)                                                         \
32eab33fc589a8e1ca04f5703b5f1ace69f8ff9aeaIgor Murashkin
33eab33fc589a8e1ca04f5703b5f1ace69f8ff9aeaIgor Murashkin// Use at the beginning of each Test::TearDown() impl
34eab33fc589a8e1ca04f5703b5f1ace69f8ff9aeaIgor Murashkin#define TEST_EXTENSION_FORKING_TEAR_DOWN   TEST_EXTENSION_FORKING_SET_UP
35eab33fc589a8e1ca04f5703b5f1ace69f8ff9aeaIgor Murashkin
36eab33fc589a8e1ca04f5703b5f1ace69f8ff9aeaIgor Murashkin// Use at the beginning of each Test::Test constructor
37eab33fc589a8e1ca04f5703b5f1ace69f8ff9aeaIgor Murashkin#define TEST_EXTENSION_FORKING_CONSTRUCTOR TEST_EXTENSION_FORKING_SET_UP
38eab33fc589a8e1ca04f5703b5f1ace69f8ff9aeaIgor Murashkin
39eab33fc589a8e1ca04f5703b5f1ace69f8ff9aeaIgor Murashkin// Use at the beginning of each Test::~Test destructor
40eab33fc589a8e1ca04f5703b5f1ace69f8ff9aeaIgor Murashkin#define TEST_EXTENSION_FORKING_DESTRUCTOR  TEST_EXTENSION_FORKING_TEAR_DOWN
41eab33fc589a8e1ca04f5703b5f1ace69f8ff9aeaIgor Murashkin
42eab33fc589a8e1ca04f5703b5f1ace69f8ff9aeaIgor Murashkin// Use at the beginning of each test body, e.g. TEST(x,y), TEST_F(x,y), etc
43eab33fc589a8e1ca04f5703b5f1ace69f8ff9aeaIgor Murashkin#define TEST_EXTENSION_FORKING_INIT                                         \
44eab33fc589a8e1ca04f5703b5f1ace69f8ff9aeaIgor Murashkin    do {                                                                    \
45eab33fc589a8e1ca04f5703b5f1ace69f8ff9aeaIgor Murashkin        TEST_EXTENSION_FORKING_SET_UP;                                      \
46eab33fc589a8e1ca04f5703b5f1ace69f8ff9aeaIgor Murashkin        if (HasFatalFailure()) return;                                      \
47eab33fc589a8e1ca04f5703b5f1ace69f8ff9aeaIgor Murashkin    } while(false)                                                          \
48eab33fc589a8e1ca04f5703b5f1ace69f8ff9aeaIgor Murashkin
49eab33fc589a8e1ca04f5703b5f1ace69f8ff9aeaIgor Murashkin// Are we running each test by forking it?
5000b597f428ddb584a8251cd030cb8e3547ee869dIgor Murashkin#define TEST_EXTENSION_FORKING_ENABLED                                      \
5100b597f428ddb584a8251cd030cb8e3547ee869dIgor Murashkin    (android::camera2::tests::TestSettings::ForkingEnabled())
52eab33fc589a8e1ca04f5703b5f1ace69f8ff9aeaIgor Murashkin
53eab33fc589a8e1ca04f5703b5f1ace69f8ff9aeaIgor Murashkin
54eab33fc589a8e1ca04f5703b5f1ace69f8ff9aeaIgor Murashkin
55eab33fc589a8e1ca04f5703b5f1ace69f8ff9aeaIgor Murashkin#endif
56eab33fc589a8e1ca04f5703b5f1ace69f8ff9aeaIgor Murashkin
57