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