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