| #!/usr/bin/env python3 |
| # Copyright 2016 Google Inc. All Rights Reserved. |
| # |
| # 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. |
| |
| from fruit_test_common import * |
| |
| COMMON_DEFINITIONS = ''' |
| #include "test_common.h" |
| |
| using namespace std; |
| using namespace fruit::impl; |
| ''' |
| |
| def test_invoke_no_args(): |
| source = ''' |
| int main() { |
| // This is static because the lambda must have no captures. |
| static int num_invocations = 0; |
| |
| auto l = []() { |
| ++num_invocations; |
| }; |
| using L = decltype(l); |
| LambdaInvoker::invoke<L>(); |
| Assert(num_invocations == 1); |
| } |
| ''' |
| expect_success( |
| COMMON_DEFINITIONS, |
| source, |
| locals()) |
| |
| def test_invoke_some_args(): |
| source = ''' |
| int main() { |
| // This is static because the lambda must have no captures. |
| static int num_invocations = 0; |
| |
| auto l = [](int n, double x) { |
| Assert(n == 5); |
| Assert(x == 3.14); |
| ++num_invocations; |
| }; |
| using L = decltype(l); |
| LambdaInvoker::invoke<L>(5, 3.14); |
| Assert(num_invocations == 1); |
| } |
| ''' |
| expect_success( |
| COMMON_DEFINITIONS, |
| source, |
| locals()) |
| |
| if __name__== '__main__': |
| main(__file__) |