/* * Copyright (C) 2018, The Android Open Source Project * * 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. */ #include "code_writer.h" #include #include using android::aidl::CodeWriter; using std::string; using std::unique_ptr; namespace android { namespace aidl { TEST(CodeWriterTest, AppendOperator) { string str; CodeWriterPtr ptr = CodeWriter::ForString(&str); CodeWriter& writer = *ptr; writer << "Write this"; writer.Close(); EXPECT_EQ(str, "Write this"); } TEST(CodeWriterTest, AppendOperatorCascade) { string str; CodeWriterPtr ptr = CodeWriter::ForString(&str); CodeWriter& writer = *ptr; writer << "Write this " << "and that"; writer.Close(); EXPECT_EQ(str, "Write this and that"); } TEST(CodeWriterTest, WorksWithNonAscii) { // Due to b/174366536(basic_stringbuf implicit-conversion), the following snippet crashes // std::stringstream s; // s << "가"; std::string str; CodeWriterPtr ptr = CodeWriter::ForString(&str); CodeWriter& writer = *ptr; writer << "가"; writer.Close(); EXPECT_EQ(str, "가"); } } // namespace aidl } // namespace android