generate_cpp_unittest.cpp revision 3bb6bc1d481459cc9ec93b764d245040b78e6507
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[] =
1113bb6bc1d481459cc9ec93b764d245040b78e6507Christopher WileyR"(#ifndef AIDL_GENERATED__BP_PING_RESPONDER_H_
1123bb6bc1d481459cc9ec93b764d245040b78e6507Christopher Wiley#define AIDL_GENERATED__BP_PING_RESPONDER_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
1233bb6bc1d481459cc9ec93b764d245040b78e6507Christopher Wileyclass BpPingResponder : 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
1343bb6bc1d481459cc9ec93b764d245040b78e6507Christopher Wiley#endif  // AIDL_GENERATED__BP_PING_RESPONDER_H_)";
135a834dd4650b3196893440ee49c7ff6b303b45a92Casey Dahlin
1360c732dbae2e6b33cde9a266ea091e1459742f1f1Christopher Wileyconst char kExpectedTrivialInterfaceHeaderOutput[] =
1373bb6bc1d481459cc9ec93b764d245040b78e6507Christopher WileyR"(#ifndef AIDL_GENERATED__I_PING_RESPONDER_H_
1383bb6bc1d481459cc9ec93b764d245040b78e6507Christopher Wiley#define AIDL_GENERATED__I_PING_RESPONDER_H_
1393bb6bc1d481459cc9ec93b764d245040b78e6507Christopher Wiley
1403bb6bc1d481459cc9ec93b764d245040b78e6507Christopher Wiley#include <binder/IBinder.h>
1410c732dbae2e6b33cde9a266ea091e1459742f1f1Christopher Wiley#include <binder/IInterface.h>
1420c732dbae2e6b33cde9a266ea091e1459742f1f1Christopher Wiley
1430c732dbae2e6b33cde9a266ea091e1459742f1f1Christopher Wileynamespace android {
1440c732dbae2e6b33cde9a266ea091e1459742f1f1Christopher Wiley
1450c732dbae2e6b33cde9a266ea091e1459742f1f1Christopher Wileynamespace generated {
1460c732dbae2e6b33cde9a266ea091e1459742f1f1Christopher Wiley
1473bb6bc1d481459cc9ec93b764d245040b78e6507Christopher Wileyclass IPingResponder : public android::IInterface {
1480c732dbae2e6b33cde9a266ea091e1459742f1f1Christopher Wileypublic:
1490c732dbae2e6b33cde9a266ea091e1459742f1f1Christopher WileyDECLARE_META_INTERFACE(PingResponder);
1500c732dbae2e6b33cde9a266ea091e1459742f1f1Christopher Wileyvirtual android::status_t Ping(int32_t token, int32_t* _aidl_return) = 0;
1510c732dbae2e6b33cde9a266ea091e1459742f1f1Christopher Wileyenum Call {
1520c732dbae2e6b33cde9a266ea091e1459742f1f1Christopher Wiley  PING = android::IBinder::FIRST_CALL_TRANSACTION + 0,
1533bb6bc1d481459cc9ec93b764d245040b78e6507Christopher Wiley};
1540c732dbae2e6b33cde9a266ea091e1459742f1f1Christopher Wiley};  // class IPingResponder
1550c732dbae2e6b33cde9a266ea091e1459742f1f1Christopher Wiley
1560c732dbae2e6b33cde9a266ea091e1459742f1f1Christopher Wiley}  // namespace generated
1570c732dbae2e6b33cde9a266ea091e1459742f1f1Christopher Wiley
1580c732dbae2e6b33cde9a266ea091e1459742f1f1Christopher Wiley}  // namespace android
1593bb6bc1d481459cc9ec93b764d245040b78e6507Christopher Wiley
1603bb6bc1d481459cc9ec93b764d245040b78e6507Christopher Wiley#endif  // AIDL_GENERATED__I_PING_RESPONDER_H_)";
1610c732dbae2e6b33cde9a266ea091e1459742f1f1Christopher Wiley
1621dd458d3e3647823acb9554f8ae17631d597a1ecChristopher Wileyconst char kExpectedTrivialInterfaceSourceOutput[] =
1631dd458d3e3647823acb9554f8ae17631d597a1ecChristopher WileyR"(#include <IPingResponder.h>
1641dd458d3e3647823acb9554f8ae17631d597a1ecChristopher Wiley#include <BpPingResponder.h>
1651dd458d3e3647823acb9554f8ae17631d597a1ecChristopher Wiley
1661dd458d3e3647823acb9554f8ae17631d597a1ecChristopher Wileynamespace android {
1671dd458d3e3647823acb9554f8ae17631d597a1ecChristopher Wiley
1681dd458d3e3647823acb9554f8ae17631d597a1ecChristopher Wileynamespace generated {
1691dd458d3e3647823acb9554f8ae17631d597a1ecChristopher Wiley
1701dd458d3e3647823acb9554f8ae17631d597a1ecChristopher WileyIMPLEMENT_META_INTERFACE(PingResponder, "IPingResponder");
1711dd458d3e3647823acb9554f8ae17631d597a1ecChristopher Wiley
1721dd458d3e3647823acb9554f8ae17631d597a1ecChristopher Wiley}  // namespace generated
1731dd458d3e3647823acb9554f8ae17631d597a1ecChristopher Wiley
1741dd458d3e3647823acb9554f8ae17631d597a1ecChristopher Wiley}  // namespace android
1751dd458d3e3647823acb9554f8ae17631d597a1ecChristopher Wiley)";
1761dd458d3e3647823acb9554f8ae17631d597a1ecChristopher Wiley
177a834dd4650b3196893440ee49c7ff6b303b45a92Casey Dahlin}  // namespace
178a834dd4650b3196893440ee49c7ff6b303b45a92Casey Dahlin
1790c732dbae2e6b33cde9a266ea091e1459742f1f1Christopher Wileyclass TrivialInterfaceASTTest : public ::testing::Test {
1800c732dbae2e6b33cde9a266ea091e1459742f1f1Christopher Wiley protected:
1811ae2bc56d20fe0e19262f2721abc338662fa6e30Casey Dahlin  AidlInterface* Parse() {
182a834dd4650b3196893440ee49c7ff6b303b45a92Casey Dahlin
1834a2884b0e9414ed9dfee4e141e8bd462c07b442bChristopher Wiley  FakeIoDelegate io_delegate;
1844a2884b0e9414ed9dfee4e141e8bd462c07b442bChristopher Wiley  io_delegate.SetFileContents("IPingResponder.aidl", kTrivialInterfaceAIDL);
1854a2884b0e9414ed9dfee4e141e8bd462c07b442bChristopher Wiley
1864a2884b0e9414ed9dfee4e141e8bd462c07b442bChristopher Wiley  cpp::TypeNamespace types;
1871ae2bc56d20fe0e19262f2721abc338662fa6e30Casey Dahlin  AidlInterface* ret = nullptr;
1880edf34239909bbc16e884ea2517e5f3398185d0fCasey Dahlin  std::vector<std::unique_ptr<AidlImport>> imports;
1894a2884b0e9414ed9dfee4e141e8bd462c07b442bChristopher Wiley  int err = ::android::aidl::internals::load_and_validate_aidl(
1904a2884b0e9414ed9dfee4e141e8bd462c07b442bChristopher Wiley      {},  // no preprocessed files
1914a2884b0e9414ed9dfee4e141e8bd462c07b442bChristopher Wiley      {},  // no import paths
1924a2884b0e9414ed9dfee4e141e8bd462c07b442bChristopher Wiley      "IPingResponder.aidl",
1934a2884b0e9414ed9dfee4e141e8bd462c07b442bChristopher Wiley      io_delegate,
1944a2884b0e9414ed9dfee4e141e8bd462c07b442bChristopher Wiley      &types,
1954a2884b0e9414ed9dfee4e141e8bd462c07b442bChristopher Wiley      &ret,
1964a2884b0e9414ed9dfee4e141e8bd462c07b442bChristopher Wiley      &imports);
197a834dd4650b3196893440ee49c7ff6b303b45a92Casey Dahlin
1982cc93169679e222dda71c73814f28a9fb0832166Casey Dahlin    if (err)
1992cc93169679e222dda71c73814f28a9fb0832166Casey Dahlin      return nullptr;
200a834dd4650b3196893440ee49c7ff6b303b45a92Casey Dahlin
2012cc93169679e222dda71c73814f28a9fb0832166Casey Dahlin    return ret;
2020c732dbae2e6b33cde9a266ea091e1459742f1f1Christopher Wiley   }
203a834dd4650b3196893440ee49c7ff6b303b45a92Casey Dahlin
2040c732dbae2e6b33cde9a266ea091e1459742f1f1Christopher Wiley  void Compare(Document* doc, const char* expected) {
2050c732dbae2e6b33cde9a266ea091e1459742f1f1Christopher Wiley    string output;
2060c732dbae2e6b33cde9a266ea091e1459742f1f1Christopher Wiley    unique_ptr<CodeWriter> cw = GetStringWriter(&output);
207a834dd4650b3196893440ee49c7ff6b303b45a92Casey Dahlin
2080c732dbae2e6b33cde9a266ea091e1459742f1f1Christopher Wiley    doc->Write(cw.get());
209a834dd4650b3196893440ee49c7ff6b303b45a92Casey Dahlin
2100c732dbae2e6b33cde9a266ea091e1459742f1f1Christopher Wiley    EXPECT_EQ(expected, output);
2110c732dbae2e6b33cde9a266ea091e1459742f1f1Christopher Wiley  }
2120c732dbae2e6b33cde9a266ea091e1459742f1f1Christopher Wiley};
213a834dd4650b3196893440ee49c7ff6b303b45a92Casey Dahlin
2140c732dbae2e6b33cde9a266ea091e1459742f1f1Christopher WileyTEST_F(TrivialInterfaceASTTest, GeneratesClientHeader) {
2151ae2bc56d20fe0e19262f2721abc338662fa6e30Casey Dahlin  AidlInterface* interface = Parse();
2160c732dbae2e6b33cde9a266ea091e1459742f1f1Christopher Wiley  ASSERT_NE(interface, nullptr);
2170c732dbae2e6b33cde9a266ea091e1459742f1f1Christopher Wiley  TypeNamespace types;
2180c732dbae2e6b33cde9a266ea091e1459742f1f1Christopher Wiley  unique_ptr<Document> doc = internals::BuildClientHeader(types, *interface);
2190c732dbae2e6b33cde9a266ea091e1459742f1f1Christopher Wiley  Compare(doc.get(), kExpectedTrivialClientHeaderOutput);
2200c732dbae2e6b33cde9a266ea091e1459742f1f1Christopher Wiley}
2210c732dbae2e6b33cde9a266ea091e1459742f1f1Christopher Wiley
22236570f4779a413ebef9302d1563fd92917ec2e42Christopher WileyTEST_F(TrivialInterfaceASTTest, GeneratesClientSource) {
22336570f4779a413ebef9302d1563fd92917ec2e42Christopher Wiley  AidlInterface* interface = Parse();
22436570f4779a413ebef9302d1563fd92917ec2e42Christopher Wiley  ASSERT_NE(interface, nullptr);
22536570f4779a413ebef9302d1563fd92917ec2e42Christopher Wiley  TypeNamespace types;
22636570f4779a413ebef9302d1563fd92917ec2e42Christopher Wiley  unique_ptr<Document> doc = internals::BuildClientSource(types, *interface);
22736570f4779a413ebef9302d1563fd92917ec2e42Christopher Wiley  Compare(doc.get(), kExpectedTrivialClientSourceOutput);
22836570f4779a413ebef9302d1563fd92917ec2e42Christopher Wiley}
22936570f4779a413ebef9302d1563fd92917ec2e42Christopher Wiley
230ad3392747003a30928da6cd206e41f66398c2062Christopher WileyTEST_F(TrivialInterfaceASTTest, GeneratesServerSource) {
231ad3392747003a30928da6cd206e41f66398c2062Christopher Wiley  AidlInterface* interface = Parse();
232ad3392747003a30928da6cd206e41f66398c2062Christopher Wiley  ASSERT_NE(interface, nullptr);
233ad3392747003a30928da6cd206e41f66398c2062Christopher Wiley  TypeNamespace types;
234ad3392747003a30928da6cd206e41f66398c2062Christopher Wiley  unique_ptr<Document> doc = internals::BuildServerSource(types, *interface);
235ad3392747003a30928da6cd206e41f66398c2062Christopher Wiley  Compare(doc.get(), kExpectedTrivialServerSourceOutput);
236ad3392747003a30928da6cd206e41f66398c2062Christopher Wiley}
237ad3392747003a30928da6cd206e41f66398c2062Christopher Wiley
2380c732dbae2e6b33cde9a266ea091e1459742f1f1Christopher WileyTEST_F(TrivialInterfaceASTTest, GeneratesInterfaceHeader) {
2391ae2bc56d20fe0e19262f2721abc338662fa6e30Casey Dahlin  AidlInterface* interface = Parse();
2400c732dbae2e6b33cde9a266ea091e1459742f1f1Christopher Wiley  ASSERT_NE(interface, nullptr);
2410c732dbae2e6b33cde9a266ea091e1459742f1f1Christopher Wiley  TypeNamespace types;
2420c732dbae2e6b33cde9a266ea091e1459742f1f1Christopher Wiley  unique_ptr<Document> doc = internals::BuildInterfaceHeader(types, *interface);
2430c732dbae2e6b33cde9a266ea091e1459742f1f1Christopher Wiley  Compare(doc.get(), kExpectedTrivialInterfaceHeaderOutput);
244a834dd4650b3196893440ee49c7ff6b303b45a92Casey Dahlin}
245a834dd4650b3196893440ee49c7ff6b303b45a92Casey Dahlin
2461dd458d3e3647823acb9554f8ae17631d597a1ecChristopher WileyTEST_F(TrivialInterfaceASTTest, GeneratesInterfaceSource) {
2471ae2bc56d20fe0e19262f2721abc338662fa6e30Casey Dahlin  AidlInterface* interface = Parse();
2481dd458d3e3647823acb9554f8ae17631d597a1ecChristopher Wiley  ASSERT_NE(interface, nullptr);
2491dd458d3e3647823acb9554f8ae17631d597a1ecChristopher Wiley  TypeNamespace types;
2501dd458d3e3647823acb9554f8ae17631d597a1ecChristopher Wiley  unique_ptr<Document> doc = internals::BuildInterfaceSource(types, *interface);
2511dd458d3e3647823acb9554f8ae17631d597a1ecChristopher Wiley  Compare(doc.get(), kExpectedTrivialInterfaceSourceOutput);
2521dd458d3e3647823acb9554f8ae17631d597a1ecChristopher Wiley}
2531dd458d3e3647823acb9554f8ae17631d597a1ecChristopher Wiley
254f944e79bdaf92fffe9ea78314d3636e7e4de8c51Christopher Wiley}  // namespace cpp
255a834dd4650b3196893440ee49c7ff6b303b45a92Casey Dahlin}  // namespace aidl
256a834dd4650b3196893440ee49c7ff6b303b45a92Casey Dahlin}  // namespace android
257