]>
git.ipfire.org Git - thirdparty/squid.git/blob - test-suite/syntheticoperators.cc
2 * Copyright (C) 1996-2020 The Squid Software Foundation and contributors
4 * Squid software is distributed under GPLv2+ license and includes
5 * contributions from numerous individuals and organizations.
6 * Please see the COPYING and CONTRIBUTORS files for details.
20 HasExplicit(HasExplicit
const &);
21 HasExplicit
&operator=(HasExplicit
const &);
22 static int const &Instances();
23 static int const &Assignments();
24 static void Assignments(int const &);
26 static void AddInstance();
27 static void RemoveInstance();
28 static void Assignment();
29 static int Instances_
;
30 static int Assignments_
;
33 int HasExplicit::Instances_(0);
34 int HasExplicit::Assignments_(0);
36 HasExplicit::HasExplicit()
41 HasExplicit::~HasExplicit()
46 HasExplicit::HasExplicit(HasExplicit
const &)
52 HasExplicit::operator= (HasExplicit
const &)
59 HasExplicit::AddInstance()
65 HasExplicit::RemoveInstance()
71 HasExplicit::Assignment()
77 HasExplicit::Instances()
83 HasExplicit::Assignments()
89 HasExplicit::Assignments(int const &newValue
)
91 Assignments_
= newValue
;
95 CheckHasExplicitWorks()
97 assert (HasExplicit::Instances() == 0);
98 HasExplicit
*one
= new HasExplicit
;
99 assert (HasExplicit::Instances() == 1);
100 HasExplicit
*two
= new HasExplicit
;
101 assert (HasExplicit::Instances() == 2);
103 assert (HasExplicit::Instances() == 2);
104 assert (HasExplicit::Assignments() == 1);
106 assert (HasExplicit::Instances() == 2);
107 assert (HasExplicit::Assignments() == 2);
108 HasExplicit
*three
= new HasExplicit(*two
);
109 assert (HasExplicit::Instances() == 3);
111 assert (HasExplicit::Instances() == 2);
113 assert (HasExplicit::Instances() == 1);
115 assert (HasExplicit::Instances() == 0);
116 HasExplicit::Assignments(0);
117 assert (HasExplicit::Assignments() == 0);
120 class SyntheticOwnsExplicit
127 CheckSyntheticWorks()
129 assert (HasExplicit::Instances() == 0);
130 assert (HasExplicit::Assignments() == 0);
131 SyntheticOwnsExplicit
*one
= new SyntheticOwnsExplicit
;
132 assert (HasExplicit::Instances() == 1);
133 SyntheticOwnsExplicit
*two
= new SyntheticOwnsExplicit
;
134 assert (HasExplicit::Instances() == 2);
136 assert (HasExplicit::Instances() == 2);
137 assert (HasExplicit::Assignments() == 1);
139 assert (HasExplicit::Instances() == 2);
140 assert (HasExplicit::Assignments() == 2);
141 SyntheticOwnsExplicit
*three
= new SyntheticOwnsExplicit(*two
);
142 assert (HasExplicit::Instances() == 3);
144 assert (HasExplicit::Instances() == 2);
146 assert (HasExplicit::Instances() == 1);
148 assert (HasExplicit::Instances() == 0);
149 HasExplicit::Assignments(0);
150 assert (HasExplicit::Assignments() == 0);
156 CheckHasExplicitWorks();
157 CheckSyntheticWorks();