1c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)// Copyright (c) 2013 The Chromium Authors. All rights reserved. 2c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 3c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)// found in the LICENSE file. 4c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)// 5c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)// Test file for the empty string clang tool. 6c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 7c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#include <string> 8c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 9c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)// Tests for std::string declarations. 105f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)void TestDeclarations() { 115f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) std::string a, b("abc"), c; 125f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)} 13c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 14c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)// Tests for std::string allocated with new. 15c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)void TestNew() { 165f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) std::string* a = new std::string, *b = new std::string("abc"), 175f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) *c = new std::string, *d = new std::string(); 18c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)} 19c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 20c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)// Tests for std::string construction in initializer lists. 21c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)class TestInitializers { 22c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) public: 23c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) TestInitializers() {} 24c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) TestInitializers(bool) {} 25c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) TestInitializers(double) : b("cat"), c() {} 26c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 27c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) private: 28c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) std::string a; 29c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) std::string b; 30c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) std::string c; 31c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)}; 32c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 33c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)// Tests for temporary std::strings. 34c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)void TestTemporaries(const std::string& reference_argument, 35c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) const std::string value_argument) { 36c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) TestTemporaries(std::string(), std::string()); 37c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) TestTemporaries(std::string(), std::string()); 38c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)} 39c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 40c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)// Tests for temporary std::wstrings. 41c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)void TestWideTemporaries(const std::wstring& reference_argument, 42c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) const std::wstring value_argument) { 43c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) TestWideTemporaries(std::wstring(), std::wstring()); 44c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) TestWideTemporaries(std::wstring(), std::wstring()); 45c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)} 465f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 47