generate_cpp_unittest.cpp revision 36570f4779a413ebef9302d1563fd92917ec2e42
1a834dd4650b3196893440ee49c7ff6b303b45a92Casey Dahlin/*
2a834dd4650b3196893440ee49c7ff6b303b45a92Casey Dahlin * Copyright (C) 2015, The Android Open Source Project
3a834dd4650b3196893440ee49c7ff6b303b45a92Casey Dahlin *
4a834dd4650b3196893440ee49c7ff6b303b45a92Casey Dahlin * Licensed under the Apache License, Version 2.0 (the "License");
5a834dd4650b3196893440ee49c7ff6b303b45a92Casey Dahlin * you may not use this file except in compliance with the License.
6a834dd4650b3196893440ee49c7ff6b303b45a92Casey Dahlin * You may obtain a copy of the License at
7a834dd4650b3196893440ee49c7ff6b303b45a92Casey Dahlin *
8a834dd4650b3196893440ee49c7ff6b303b45a92Casey Dahlin *     http://www.apache.org/licenses/LICENSE-2.0
9a834dd4650b3196893440ee49c7ff6b303b45a92Casey Dahlin *
10a834dd4650b3196893440ee49c7ff6b303b45a92Casey Dahlin * Unless required by applicable law or agreed to in writing, software
11a834dd4650b3196893440ee49c7ff6b303b45a92Casey Dahlin * distributed under the License is distributed on an "AS IS" BASIS,
12a834dd4650b3196893440ee49c7ff6b303b45a92Casey Dahlin * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13a834dd4650b3196893440ee49c7ff6b303b45a92Casey Dahlin * See the License for the specific language governing permissions and
14a834dd4650b3196893440ee49c7ff6b303b45a92Casey Dahlin * limitations under the License.
15a834dd4650b3196893440ee49c7ff6b303b45a92Casey Dahlin */
16a834dd4650b3196893440ee49c7ff6b303b45a92Casey Dahlin
17a834dd4650b3196893440ee49c7ff6b303b45a92Casey Dahlin#include <string>
18a834dd4650b3196893440ee49c7ff6b303b45a92Casey Dahlin
19a834dd4650b3196893440ee49c7ff6b303b45a92Casey Dahlin#include <gtest/gtest.h>
20a834dd4650b3196893440ee49c7ff6b303b45a92Casey Dahlin
212cc93169679e222dda71c73814f28a9fb0832166Casey Dahlin#include "aidl.h"
22a834dd4650b3196893440ee49c7ff6b303b45a92Casey Dahlin#include "aidl_language.h"
23a834dd4650b3196893440ee49c7ff6b303b45a92Casey Dahlin#include "ast_cpp.h"
24a834dd4650b3196893440ee49c7ff6b303b45a92Casey Dahlin#include "code_writer.h"
25ad3392747003a30928da6cd206e41f66398c2062Christopher Wiley#include "generate_cpp.h"
264a2884b0e9414ed9dfee4e141e8bd462c07b442bChristopher Wiley#include "tests/fake_io_delegate.h"
27e3550c6679939d2bf5f35c540cd83198ab156fb7Christopher Wiley#include "type_cpp.h"
28a834dd4650b3196893440ee49c7ff6b303b45a92Casey Dahlin
294a2884b0e9414ed9dfee4e141e8bd462c07b442bChristopher Wileyusing android::aidl::test::FakeIoDelegate;
30a834dd4650b3196893440ee49c7ff6b303b45a92Casey Dahlinusing std::string;
31a834dd4650b3196893440ee49c7ff6b303b45a92Casey Dahlinusing std::unique_ptr;
32a834dd4650b3196893440ee49c7ff6b303b45a92Casey Dahlin
33a834dd4650b3196893440ee49c7ff6b303b45a92Casey Dahlinnamespace android {
34a834dd4650b3196893440ee49c7ff6b303b45a92Casey Dahlinnamespace aidl {
35f944e79bdaf92fffe9ea78314d3636e7e4de8c51Christopher Wileynamespace cpp {
36a834dd4650b3196893440ee49c7ff6b303b45a92Casey Dahlinnamespace {
37a834dd4650b3196893440ee49c7ff6b303b45a92Casey Dahlin
38a834dd4650b3196893440ee49c7ff6b303b45a92Casey Dahlinconst char kTrivialInterfaceAIDL[] =
39a834dd4650b3196893440ee49c7ff6b303b45a92Casey DahlinR"(interface IPingResponder {
40a834dd4650b3196893440ee49c7ff6b303b45a92Casey Dahlin  int Ping(int token);
41a834dd4650b3196893440ee49c7ff6b303b45a92Casey Dahlin})";
42a834dd4650b3196893440ee49c7ff6b303b45a92Casey Dahlin
4336570f4779a413ebef9302d1563fd92917ec2e42Christopher Wileyconst char kExpectedTrivialClientSourceOutput[] =
4436570f4779a413ebef9302d1563fd92917ec2e42Christopher WileyR"(#include <BpPingResponder.h>
4536570f4779a413ebef9302d1563fd92917ec2e42Christopher Wiley#include <binder/Parcel.h>
4636570f4779a413ebef9302d1563fd92917ec2e42Christopher Wiley
4736570f4779a413ebef9302d1563fd92917ec2e42Christopher Wileynamespace android {
4836570f4779a413ebef9302d1563fd92917ec2e42Christopher Wiley
4936570f4779a413ebef9302d1563fd92917ec2e42Christopher Wileynamespace generated {
5036570f4779a413ebef9302d1563fd92917ec2e42Christopher Wiley
5136570f4779a413ebef9302d1563fd92917ec2e42Christopher WileyBpPingResponder::BpPingResponder(const android::sp<android::IBinder>& impl)
5236570f4779a413ebef9302d1563fd92917ec2e42Christopher Wiley    : BpInterface<IPingResponder>(impl){
5336570f4779a413ebef9302d1563fd92917ec2e42Christopher Wiley}
5436570f4779a413ebef9302d1563fd92917ec2e42Christopher Wiley
5536570f4779a413ebef9302d1563fd92917ec2e42Christopher Wileyandroid::status_t BpPingResponder::Ping(int32_t token, int32_t* _aidl_return) {
5636570f4779a413ebef9302d1563fd92917ec2e42Christopher Wileyandroid::Parcel data;
5736570f4779a413ebef9302d1563fd92917ec2e42Christopher Wileyandroid::Parcel reply;
5836570f4779a413ebef9302d1563fd92917ec2e42Christopher Wileyandroid::status_t status;
5936570f4779a413ebef9302d1563fd92917ec2e42Christopher Wileystatus = data.writeInt32(token);
6036570f4779a413ebef9302d1563fd92917ec2e42Christopher Wileyif (status != android::OK) { return status; }
6136570f4779a413ebef9302d1563fd92917ec2e42Christopher Wileystatus = remote()->transact(IPingResponder::PING, data, &reply);
6236570f4779a413ebef9302d1563fd92917ec2e42Christopher Wileyif (status != android::OK) { return status; }
6336570f4779a413ebef9302d1563fd92917ec2e42Christopher Wileystatus = reply.readInt32(_aidl_return);
6436570f4779a413ebef9302d1563fd92917ec2e42Christopher Wileyif (status != android::OK) { return status; }
6536570f4779a413ebef9302d1563fd92917ec2e42Christopher Wileyreturn status;
6636570f4779a413ebef9302d1563fd92917ec2e42Christopher Wiley}
6736570f4779a413ebef9302d1563fd92917ec2e42Christopher Wiley
6836570f4779a413ebef9302d1563fd92917ec2e42Christopher Wiley}  // namespace generated
6936570f4779a413ebef9302d1563fd92917ec2e42Christopher Wiley
7036570f4779a413ebef9302d1563fd92917ec2e42Christopher Wiley}  // namespace android
7136570f4779a413ebef9302d1563fd92917ec2e42Christopher Wiley)";
7236570f4779a413ebef9302d1563fd92917ec2e42Christopher Wiley
73ad3392747003a30928da6cd206e41f66398c2062Christopher Wileyconst char kExpectedTrivialServerSourceOutput[] =
74ad3392747003a30928da6cd206e41f66398c2062Christopher WileyR"(#include <BnPingResponder.h>
75ad3392747003a30928da6cd206e41f66398c2062Christopher Wiley#include <binder/Parcel.h>
76ad3392747003a30928da6cd206e41f66398c2062Christopher Wiley
77ad3392747003a30928da6cd206e41f66398c2062Christopher Wileynamespace android {
78ad3392747003a30928da6cd206e41f66398c2062Christopher Wiley
79ad3392747003a30928da6cd206e41f66398c2062Christopher Wileynamespace generated {
80ad3392747003a30928da6cd206e41f66398c2062Christopher Wiley
81ad3392747003a30928da6cd206e41f66398c2062Christopher Wileyandroid::status_t BnPingResponder::onTransact(uint32_t code, const android::Parcel& data, android::Parcel* reply, uint32_t flags) {
82ad3392747003a30928da6cd206e41f66398c2062Christopher Wileyswitch (code) {
83ad3392747003a30928da6cd206e41f66398c2062Christopher Wileycase Call::PING:
84ad3392747003a30928da6cd206e41f66398c2062Christopher Wiley{
85ad3392747003a30928da6cd206e41f66398c2062Christopher Wileyint32_t in_token;
86ad3392747003a30928da6cd206e41f66398c2062Christopher Wileyint32_t _aidl_return;
87ad3392747003a30928da6cd206e41f66398c2062Christopher Wileyandroid::status_t status;
88ad3392747003a30928da6cd206e41f66398c2062Christopher Wileystatus = data.readInt32(&in_token);
89ad3392747003a30928da6cd206e41f66398c2062Christopher Wileyif (status != android::OK) { break; }
90ad3392747003a30928da6cd206e41f66398c2062Christopher Wileystatus = Ping(in_token, &_aidl_return);
91ad3392747003a30928da6cd206e41f66398c2062Christopher Wileyif (status != android::OK) { break; }
9236570f4779a413ebef9302d1563fd92917ec2e42Christopher Wileystatus = reply->writeInt32(_aidl_return);
9336570f4779a413ebef9302d1563fd92917ec2e42Christopher Wileyif (status != android::OK) { break; }
94ad3392747003a30928da6cd206e41f66398c2062Christopher Wiley}
95ad3392747003a30928da6cd206e41f66398c2062Christopher Wileybreak;
96ad3392747003a30928da6cd206e41f66398c2062Christopher Wileydefault:
97ad3392747003a30928da6cd206e41f66398c2062Christopher Wiley{
98ad3392747003a30928da6cd206e41f66398c2062Christopher Wileystatus = android::BBinder::onTransact(code, data, reply, flags);
99ad3392747003a30928da6cd206e41f66398c2062Christopher Wiley}
100ad3392747003a30928da6cd206e41f66398c2062Christopher Wileybreak;
101ad3392747003a30928da6cd206e41f66398c2062Christopher Wiley}
102ad3392747003a30928da6cd206e41f66398c2062Christopher Wileyreturn status;
103ad3392747003a30928da6cd206e41f66398c2062Christopher Wiley}
104ad3392747003a30928da6cd206e41f66398c2062Christopher Wiley
105ad3392747003a30928da6cd206e41f66398c2062Christopher Wiley}  // namespace generated
106ad3392747003a30928da6cd206e41f66398c2062Christopher Wiley
107ad3392747003a30928da6cd206e41f66398c2062Christopher Wiley}  // namespace android
108ad3392747003a30928da6cd206e41f66398c2062Christopher Wiley)";
109ad3392747003a30928da6cd206e41f66398c2062Christopher Wiley
110a834dd4650b3196893440ee49c7ff6b303b45a92Casey Dahlinconst char kExpectedTrivialClientHeaderOutput[] =
111a834dd4650b3196893440ee49c7ff6b303b45a92Casey DahlinR"(#ifndef BpPingResponder_H
112a834dd4650b3196893440ee49c7ff6b303b45a92Casey Dahlin#define BpPingResponder_H
113a834dd4650b3196893440ee49c7ff6b303b45a92Casey Dahlin
114a834dd4650b3196893440ee49c7ff6b303b45a92Casey Dahlin#include <binder/IBinder.h>
115a834dd4650b3196893440ee49c7ff6b303b45a92Casey Dahlin#include <binder/IInterface.h>
116a834dd4650b3196893440ee49c7ff6b303b45a92Casey Dahlin#include <utils/Errors.h>
117a834dd4650b3196893440ee49c7ff6b303b45a92Casey Dahlin#include <IPingResponder.h>
118a834dd4650b3196893440ee49c7ff6b303b45a92Casey Dahlin
119a834dd4650b3196893440ee49c7ff6b303b45a92Casey Dahlinnamespace android {
120a834dd4650b3196893440ee49c7ff6b303b45a92Casey Dahlin
1210c732dbae2e6b33cde9a266ea091e1459742f1f1Christopher Wileynamespace generated {
1220c732dbae2e6b33cde9a266ea091e1459742f1f1Christopher Wiley
123a834dd4650b3196893440ee49c7ff6b303b45a92Casey Dahlinclass BpPingResponder : public public android::BpInterface<IPingResponder> {
124a834dd4650b3196893440ee49c7ff6b303b45a92Casey Dahlinpublic:
125a834dd4650b3196893440ee49c7ff6b303b45a92Casey DahlinBpPingResponder();
126f094d58e623418bffa53fa82e0ef159daee8801bChristopher Wileyvirtual ~BpPingResponder() = default;
1270c732dbae2e6b33cde9a266ea091e1459742f1f1Christopher Wileyandroid::status_t Ping(int32_t token, int32_t* _aidl_return) override;
128a834dd4650b3196893440ee49c7ff6b303b45a92Casey Dahlin};  // class BpPingResponder
129a834dd4650b3196893440ee49c7ff6b303b45a92Casey Dahlin
1300c732dbae2e6b33cde9a266ea091e1459742f1f1Christopher Wiley}  // namespace generated
1310c732dbae2e6b33cde9a266ea091e1459742f1f1Christopher Wiley
132a834dd4650b3196893440ee49c7ff6b303b45a92Casey Dahlin}  // namespace android
133a834dd4650b3196893440ee49c7ff6b303b45a92Casey Dahlin
134a834dd4650b3196893440ee49c7ff6b303b45a92Casey Dahlin#endif  // BpPingResponder_H)";
135a834dd4650b3196893440ee49c7ff6b303b45a92Casey Dahlin
1360c732dbae2e6b33cde9a266ea091e1459742f1f1Christopher Wileyconst char kExpectedTrivialInterfaceHeaderOutput[] =
1370c732dbae2e6b33cde9a266ea091e1459742f1f1Christopher WileyR"(#include <binder/IBinder.h>
1380c732dbae2e6b33cde9a266ea091e1459742f1f1Christopher Wiley#include <binder/IInterface.h>
1390c732dbae2e6b33cde9a266ea091e1459742f1f1Christopher Wiley
1400c732dbae2e6b33cde9a266ea091e1459742f1f1Christopher Wileynamespace android {
1410c732dbae2e6b33cde9a266ea091e1459742f1f1Christopher Wiley
1420c732dbae2e6b33cde9a266ea091e1459742f1f1Christopher Wileynamespace generated {
1430c732dbae2e6b33cde9a266ea091e1459742f1f1Christopher Wiley
1440c732dbae2e6b33cde9a266ea091e1459742f1f1Christopher Wileyclass IPingResponder : public public android::IInterface {
1450c732dbae2e6b33cde9a266ea091e1459742f1f1Christopher Wileypublic:
1460c732dbae2e6b33cde9a266ea091e1459742f1f1Christopher WileyDECLARE_META_INTERFACE(PingResponder);
1470c732dbae2e6b33cde9a266ea091e1459742f1f1Christopher Wileyvirtual android::status_t Ping(int32_t token, int32_t* _aidl_return) = 0;
1480c732dbae2e6b33cde9a266ea091e1459742f1f1Christopher Wileyenum Call {
1490c732dbae2e6b33cde9a266ea091e1459742f1f1Christopher Wiley  PING = android::IBinder::FIRST_CALL_TRANSACTION + 0,
1500c732dbae2e6b33cde9a266ea091e1459742f1f1Christopher Wiley}
1510c732dbae2e6b33cde9a266ea091e1459742f1f1Christopher Wiley};  // class IPingResponder
1520c732dbae2e6b33cde9a266ea091e1459742f1f1Christopher Wiley
1530c732dbae2e6b33cde9a266ea091e1459742f1f1Christopher Wiley}  // namespace generated
1540c732dbae2e6b33cde9a266ea091e1459742f1f1Christopher Wiley
1550c732dbae2e6b33cde9a266ea091e1459742f1f1Christopher Wiley}  // namespace android
1560c732dbae2e6b33cde9a266ea091e1459742f1f1Christopher Wiley)";
1570c732dbae2e6b33cde9a266ea091e1459742f1f1Christopher Wiley
1581dd458d3e3647823acb9554f8ae17631d597a1ecChristopher Wileyconst char kExpectedTrivialInterfaceSourceOutput[] =
1591dd458d3e3647823acb9554f8ae17631d597a1ecChristopher WileyR"(#include <IPingResponder.h>
1601dd458d3e3647823acb9554f8ae17631d597a1ecChristopher Wiley#include <BpPingResponder.h>
1611dd458d3e3647823acb9554f8ae17631d597a1ecChristopher Wiley
1621dd458d3e3647823acb9554f8ae17631d597a1ecChristopher Wileynamespace android {
1631dd458d3e3647823acb9554f8ae17631d597a1ecChristopher Wiley
1641dd458d3e3647823acb9554f8ae17631d597a1ecChristopher Wileynamespace generated {
1651dd458d3e3647823acb9554f8ae17631d597a1ecChristopher Wiley
1661dd458d3e3647823acb9554f8ae17631d597a1ecChristopher WileyIMPLEMENT_META_INTERFACE(PingResponder, "IPingResponder");
1671dd458d3e3647823acb9554f8ae17631d597a1ecChristopher Wiley
1681dd458d3e3647823acb9554f8ae17631d597a1ecChristopher Wiley}  // namespace generated
1691dd458d3e3647823acb9554f8ae17631d597a1ecChristopher Wiley
1701dd458d3e3647823acb9554f8ae17631d597a1ecChristopher Wiley}  // namespace android
1711dd458d3e3647823acb9554f8ae17631d597a1ecChristopher Wiley)";
1721dd458d3e3647823acb9554f8ae17631d597a1ecChristopher Wiley
173a834dd4650b3196893440ee49c7ff6b303b45a92Casey Dahlin}  // namespace
174a834dd4650b3196893440ee49c7ff6b303b45a92Casey Dahlin
1750c732dbae2e6b33cde9a266ea091e1459742f1f1Christopher Wileyclass TrivialInterfaceASTTest : public ::testing::Test {
1760c732dbae2e6b33cde9a266ea091e1459742f1f1Christopher Wiley protected:
1771ae2bc56d20fe0e19262f2721abc338662fa6e30Casey Dahlin  AidlInterface* Parse() {
178a834dd4650b3196893440ee49c7ff6b303b45a92Casey Dahlin
1794a2884b0e9414ed9dfee4e141e8bd462c07b442bChristopher Wiley  FakeIoDelegate io_delegate;
1804a2884b0e9414ed9dfee4e141e8bd462c07b442bChristopher Wiley  io_delegate.SetFileContents("IPingResponder.aidl", kTrivialInterfaceAIDL);
1814a2884b0e9414ed9dfee4e141e8bd462c07b442bChristopher Wiley
1824a2884b0e9414ed9dfee4e141e8bd462c07b442bChristopher Wiley  cpp::TypeNamespace types;
1831ae2bc56d20fe0e19262f2721abc338662fa6e30Casey Dahlin  AidlInterface* ret = nullptr;
1840edf34239909bbc16e884ea2517e5f3398185d0fCasey Dahlin  std::vector<std::unique_ptr<AidlImport>> imports;
1854a2884b0e9414ed9dfee4e141e8bd462c07b442bChristopher Wiley  int err = ::android::aidl::internals::load_and_validate_aidl(
1864a2884b0e9414ed9dfee4e141e8bd462c07b442bChristopher Wiley      {},  // no preprocessed files
1874a2884b0e9414ed9dfee4e141e8bd462c07b442bChristopher Wiley      {},  // no import paths
1884a2884b0e9414ed9dfee4e141e8bd462c07b442bChristopher Wiley      "IPingResponder.aidl",
1894a2884b0e9414ed9dfee4e141e8bd462c07b442bChristopher Wiley      io_delegate,
1904a2884b0e9414ed9dfee4e141e8bd462c07b442bChristopher Wiley      &types,
1914a2884b0e9414ed9dfee4e141e8bd462c07b442bChristopher Wiley      &ret,
1924a2884b0e9414ed9dfee4e141e8bd462c07b442bChristopher Wiley      &imports);
193a834dd4650b3196893440ee49c7ff6b303b45a92Casey Dahlin
1942cc93169679e222dda71c73814f28a9fb0832166Casey Dahlin    if (err)
1952cc93169679e222dda71c73814f28a9fb0832166Casey Dahlin      return nullptr;
196a834dd4650b3196893440ee49c7ff6b303b45a92Casey Dahlin
1972cc93169679e222dda71c73814f28a9fb0832166Casey Dahlin    return ret;
1980c732dbae2e6b33cde9a266ea091e1459742f1f1Christopher Wiley   }
199a834dd4650b3196893440ee49c7ff6b303b45a92Casey Dahlin
2000c732dbae2e6b33cde9a266ea091e1459742f1f1Christopher Wiley  void Compare(Document* doc, const char* expected) {
2010c732dbae2e6b33cde9a266ea091e1459742f1f1Christopher Wiley    string output;
2020c732dbae2e6b33cde9a266ea091e1459742f1f1Christopher Wiley    unique_ptr<CodeWriter> cw = GetStringWriter(&output);
203a834dd4650b3196893440ee49c7ff6b303b45a92Casey Dahlin
2040c732dbae2e6b33cde9a266ea091e1459742f1f1Christopher Wiley    doc->Write(cw.get());
205a834dd4650b3196893440ee49c7ff6b303b45a92Casey Dahlin
2060c732dbae2e6b33cde9a266ea091e1459742f1f1Christopher Wiley    EXPECT_EQ(expected, output);
2070c732dbae2e6b33cde9a266ea091e1459742f1f1Christopher Wiley  }
2080c732dbae2e6b33cde9a266ea091e1459742f1f1Christopher Wiley};
209a834dd4650b3196893440ee49c7ff6b303b45a92Casey Dahlin
2100c732dbae2e6b33cde9a266ea091e1459742f1f1Christopher WileyTEST_F(TrivialInterfaceASTTest, GeneratesClientHeader) {
2111ae2bc56d20fe0e19262f2721abc338662fa6e30Casey Dahlin  AidlInterface* interface = Parse();
2120c732dbae2e6b33cde9a266ea091e1459742f1f1Christopher Wiley  ASSERT_NE(interface, nullptr);
2130c732dbae2e6b33cde9a266ea091e1459742f1f1Christopher Wiley  TypeNamespace types;
2140c732dbae2e6b33cde9a266ea091e1459742f1f1Christopher Wiley  unique_ptr<Document> doc = internals::BuildClientHeader(types, *interface);
2150c732dbae2e6b33cde9a266ea091e1459742f1f1Christopher Wiley  Compare(doc.get(), kExpectedTrivialClientHeaderOutput);
2160c732dbae2e6b33cde9a266ea091e1459742f1f1Christopher Wiley}
2170c732dbae2e6b33cde9a266ea091e1459742f1f1Christopher Wiley
21836570f4779a413ebef9302d1563fd92917ec2e42Christopher WileyTEST_F(TrivialInterfaceASTTest, GeneratesClientSource) {
21936570f4779a413ebef9302d1563fd92917ec2e42Christopher Wiley  AidlInterface* interface = Parse();
22036570f4779a413ebef9302d1563fd92917ec2e42Christopher Wiley  ASSERT_NE(interface, nullptr);
22136570f4779a413ebef9302d1563fd92917ec2e42Christopher Wiley  TypeNamespace types;
22236570f4779a413ebef9302d1563fd92917ec2e42Christopher Wiley  unique_ptr<Document> doc = internals::BuildClientSource(types, *interface);
22336570f4779a413ebef9302d1563fd92917ec2e42Christopher Wiley  Compare(doc.get(), kExpectedTrivialClientSourceOutput);
22436570f4779a413ebef9302d1563fd92917ec2e42Christopher Wiley}
22536570f4779a413ebef9302d1563fd92917ec2e42Christopher Wiley
226ad3392747003a30928da6cd206e41f66398c2062Christopher WileyTEST_F(TrivialInterfaceASTTest, GeneratesServerSource) {
227ad3392747003a30928da6cd206e41f66398c2062Christopher Wiley  AidlInterface* interface = Parse();
228ad3392747003a30928da6cd206e41f66398c2062Christopher Wiley  ASSERT_NE(interface, nullptr);
229ad3392747003a30928da6cd206e41f66398c2062Christopher Wiley  TypeNamespace types;
230ad3392747003a30928da6cd206e41f66398c2062Christopher Wiley  unique_ptr<Document> doc = internals::BuildServerSource(types, *interface);
231ad3392747003a30928da6cd206e41f66398c2062Christopher Wiley  Compare(doc.get(), kExpectedTrivialServerSourceOutput);
232ad3392747003a30928da6cd206e41f66398c2062Christopher Wiley}
233ad3392747003a30928da6cd206e41f66398c2062Christopher Wiley
2340c732dbae2e6b33cde9a266ea091e1459742f1f1Christopher WileyTEST_F(TrivialInterfaceASTTest, GeneratesInterfaceHeader) {
2351ae2bc56d20fe0e19262f2721abc338662fa6e30Casey Dahlin  AidlInterface* interface = Parse();
2360c732dbae2e6b33cde9a266ea091e1459742f1f1Christopher Wiley  ASSERT_NE(interface, nullptr);
2370c732dbae2e6b33cde9a266ea091e1459742f1f1Christopher Wiley  TypeNamespace types;
2380c732dbae2e6b33cde9a266ea091e1459742f1f1Christopher Wiley  unique_ptr<Document> doc = internals::BuildInterfaceHeader(types, *interface);
2390c732dbae2e6b33cde9a266ea091e1459742f1f1Christopher Wiley  Compare(doc.get(), kExpectedTrivialInterfaceHeaderOutput);
240a834dd4650b3196893440ee49c7ff6b303b45a92Casey Dahlin}
241a834dd4650b3196893440ee49c7ff6b303b45a92Casey Dahlin
2421dd458d3e3647823acb9554f8ae17631d597a1ecChristopher WileyTEST_F(TrivialInterfaceASTTest, GeneratesInterfaceSource) {
2431ae2bc56d20fe0e19262f2721abc338662fa6e30Casey Dahlin  AidlInterface* interface = Parse();
2441dd458d3e3647823acb9554f8ae17631d597a1ecChristopher Wiley  ASSERT_NE(interface, nullptr);
2451dd458d3e3647823acb9554f8ae17631d597a1ecChristopher Wiley  TypeNamespace types;
2461dd458d3e3647823acb9554f8ae17631d597a1ecChristopher Wiley  unique_ptr<Document> doc = internals::BuildInterfaceSource(types, *interface);
2471dd458d3e3647823acb9554f8ae17631d597a1ecChristopher Wiley  Compare(doc.get(), kExpectedTrivialInterfaceSourceOutput);
2481dd458d3e3647823acb9554f8ae17631d597a1ecChristopher Wiley}
2491dd458d3e3647823acb9554f8ae17631d597a1ecChristopher Wiley
250f944e79bdaf92fffe9ea78314d3636e7e4de8c51Christopher Wiley}  // namespace cpp
251a834dd4650b3196893440ee49c7ff6b303b45a92Casey Dahlin}  // namespace aidl
252a834dd4650b3196893440ee49c7ff6b303b45a92Casey Dahlin}  // namespace android
253