summaryrefslogtreecommitdiff
path: root/test/unit/context/context_white.cpp
diff options
context:
space:
mode:
authorAina Niemetz <aina.niemetz@gmail.com>2020-12-09 01:26:31 -0800
committerGitHub <noreply@github.com>2020-12-09 10:26:31 +0100
commitadc9bb5dff0c3d705b91d862d61a0c3057350688 (patch)
tree41b4a8c95d183bd7c0e3f8a6cbc911ce92ea362d /test/unit/context/context_white.cpp
parent1eac626e6c23dca3a3bb92e0a62289aecb61fc02 (diff)
google test: context: Migrate context_white. (#5630)
google test: context: Migrate context_white.
Diffstat (limited to 'test/unit/context/context_white.cpp')
-rw-r--r--test/unit/context/context_white.cpp183
1 files changed, 183 insertions, 0 deletions
diff --git a/test/unit/context/context_white.cpp b/test/unit/context/context_white.cpp
new file mode 100644
index 000000000..c8ea59848
--- /dev/null
+++ b/test/unit/context/context_white.cpp
@@ -0,0 +1,183 @@
+/********************* */
+/*! \file context_white.cpp
+ ** \verbatim
+ ** Top contributors (to current version):
+ ** Aina Niemetz
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2020 by the authors listed in the file AUTHORS
+ ** in the top-level source directory and their institutional affiliations.
+ ** All rights reserved. See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief White box testing of CVC4::context::Context.
+ **
+ ** White box testing of CVC4::context::Context.
+ **/
+
+#include "base/check.h"
+#include "context/cdo.h"
+#include "test_context.h"
+
+namespace CVC4 {
+
+using namespace context;
+
+namespace test {
+
+class TestContextWhite : public TestContext
+{
+};
+
+TEST_F(TestContextWhite, simple)
+{
+ Scope* s = d_context->getTopScope();
+
+ EXPECT_EQ(s, d_context->getBottomScope());
+ EXPECT_EQ(d_context->getLevel(), 0);
+ EXPECT_EQ(d_context->d_scopeList.size(), 1);
+
+ EXPECT_EQ(s->d_pContext, d_context.get());
+ EXPECT_EQ(s->d_pCMM, d_context->d_pCMM);
+ EXPECT_EQ(s->d_level, 0);
+ EXPECT_EQ(s->d_pContextObjList, nullptr);
+
+ CDO<int> a(d_context.get());
+
+ EXPECT_EQ(s->d_pContext, d_context.get());
+ EXPECT_EQ(s->d_pCMM, d_context->d_pCMM);
+ EXPECT_EQ(s->d_level, 0);
+ EXPECT_EQ(s->d_pContextObjList, &a);
+
+ EXPECT_EQ(a.d_pScope, s);
+ EXPECT_EQ(a.d_pContextObjRestore, nullptr);
+ EXPECT_EQ(a.d_pContextObjNext, nullptr);
+ EXPECT_EQ(a.d_ppContextObjPrev, &s->d_pContextObjList);
+
+ CDO<int> b(d_context.get());
+
+ EXPECT_EQ(s->d_pContext, d_context.get());
+ EXPECT_EQ(s->d_pCMM, d_context->d_pCMM);
+ EXPECT_EQ(s->d_level, 0);
+ EXPECT_EQ(s->d_pContextObjList, &b);
+
+ EXPECT_EQ(a.d_pScope, s);
+ EXPECT_EQ(a.d_pContextObjRestore, nullptr);
+ EXPECT_EQ(a.d_pContextObjNext, nullptr);
+ EXPECT_EQ(a.d_ppContextObjPrev, &b.d_pContextObjNext);
+
+ EXPECT_EQ(b.d_pScope, s);
+ EXPECT_EQ(b.d_pContextObjRestore, nullptr);
+ EXPECT_EQ(b.d_pContextObjNext, &a);
+ EXPECT_EQ(b.d_ppContextObjPrev, &s->d_pContextObjList);
+
+ d_context->push();
+ Scope* t = d_context->getTopScope();
+ EXPECT_NE(s, t);
+
+ EXPECT_EQ(s, d_context->getBottomScope());
+ EXPECT_EQ(d_context->getLevel(), 1);
+ EXPECT_EQ(d_context->d_scopeList.size(), 2);
+
+ EXPECT_EQ(s->d_pContext, d_context.get());
+ EXPECT_EQ(s->d_pCMM, d_context->d_pCMM);
+ EXPECT_EQ(s->d_level, 0);
+ EXPECT_EQ(s->d_pContextObjList, &b);
+
+ EXPECT_EQ(t->d_pContext, d_context.get());
+ EXPECT_EQ(t->d_pCMM, d_context->d_pCMM);
+ EXPECT_EQ(t->d_level, 1);
+ EXPECT_EQ(t->d_pContextObjList, nullptr);
+
+ EXPECT_EQ(a.d_pScope, s);
+ EXPECT_EQ(a.d_pContextObjRestore, nullptr);
+ EXPECT_EQ(a.d_pContextObjNext, nullptr);
+ EXPECT_EQ(a.d_ppContextObjPrev, &b.d_pContextObjNext);
+
+ EXPECT_EQ(b.d_pScope, s);
+ EXPECT_EQ(b.d_pContextObjRestore, nullptr);
+ EXPECT_EQ(b.d_pContextObjNext, &a);
+ EXPECT_EQ(b.d_ppContextObjPrev, &s->d_pContextObjList);
+
+ a = 5;
+
+ EXPECT_EQ(t->d_pContext, d_context.get());
+ EXPECT_EQ(t->d_pCMM, d_context->d_pCMM);
+ EXPECT_EQ(t->d_level, 1);
+ EXPECT_EQ(t->d_pContextObjList, &a);
+
+ EXPECT_EQ(a.d_pScope, t);
+ EXPECT_NE(a.d_pContextObjRestore, nullptr);
+ EXPECT_EQ(a.d_pContextObjNext, nullptr);
+ EXPECT_EQ(a.d_ppContextObjPrev, &t->d_pContextObjList);
+
+ b = 3;
+
+ EXPECT_EQ(t->d_pContext, d_context.get());
+ EXPECT_EQ(t->d_pCMM, d_context->d_pCMM);
+ EXPECT_EQ(t->d_level, 1);
+ EXPECT_EQ(t->d_pContextObjList, &b);
+
+ EXPECT_EQ(a.d_pScope, t);
+ EXPECT_NE(a.d_pContextObjRestore, nullptr);
+ EXPECT_EQ(a.d_pContextObjNext, nullptr);
+ EXPECT_EQ(a.d_ppContextObjPrev, &b.d_pContextObjNext);
+
+ EXPECT_EQ(b.d_pScope, t);
+ EXPECT_NE(b.d_pContextObjRestore, nullptr);
+ EXPECT_EQ(b.d_pContextObjNext, &a);
+ EXPECT_EQ(b.d_ppContextObjPrev, &t->d_pContextObjList);
+
+ d_context->push();
+ Scope* u = d_context->getTopScope();
+ EXPECT_NE(u, t);
+ EXPECT_NE(u, s);
+
+ CDO<int> c(d_context.get());
+ c = 4;
+
+ EXPECT_EQ(c.d_pScope, u);
+ EXPECT_NE(c.d_pContextObjRestore, nullptr);
+ EXPECT_EQ(c.d_pContextObjNext, nullptr);
+ EXPECT_EQ(c.d_ppContextObjPrev, &u->d_pContextObjList);
+
+ d_context->pop();
+
+ EXPECT_EQ(t->d_pContext, d_context.get());
+ EXPECT_EQ(t->d_pCMM, d_context->d_pCMM);
+ EXPECT_EQ(t->d_level, 1);
+ EXPECT_EQ(t->d_pContextObjList, &b);
+
+ EXPECT_EQ(a.d_pScope, t);
+ EXPECT_NE(a.d_pContextObjRestore, nullptr);
+ EXPECT_EQ(a.d_pContextObjNext, nullptr);
+ EXPECT_EQ(a.d_ppContextObjPrev, &b.d_pContextObjNext);
+
+ EXPECT_EQ(b.d_pScope, t);
+ EXPECT_NE(b.d_pContextObjRestore, nullptr);
+ EXPECT_EQ(b.d_pContextObjNext, &a);
+ EXPECT_EQ(b.d_ppContextObjPrev, &t->d_pContextObjList);
+
+ d_context->pop();
+
+ EXPECT_EQ(s->d_pContext, d_context.get());
+ EXPECT_EQ(s->d_pCMM, d_context->d_pCMM);
+ EXPECT_EQ(s->d_level, 0);
+ EXPECT_EQ(s->d_pContextObjList, &c);
+
+ EXPECT_EQ(a.d_pScope, s);
+ EXPECT_EQ(a.d_pContextObjRestore, nullptr);
+ EXPECT_EQ(a.d_pContextObjNext, nullptr);
+ EXPECT_EQ(a.d_ppContextObjPrev, &b.d_pContextObjNext);
+
+ EXPECT_EQ(b.d_pScope, s);
+ EXPECT_EQ(b.d_pContextObjRestore, nullptr);
+ EXPECT_EQ(b.d_pContextObjNext, &a);
+ EXPECT_EQ(b.d_ppContextObjPrev, &c.d_pContextObjNext);
+
+ EXPECT_EQ(c.d_pScope, s);
+ EXPECT_EQ(c.d_pContextObjRestore, nullptr);
+ EXPECT_EQ(c.d_pContextObjNext, &b);
+ EXPECT_EQ(c.d_ppContextObjPrev, &s->d_pContextObjList);
+}
+} // namespace test
+} // namespace CVC4
generated by cgit on debian on lair
contact matthew@masot.net with questions or feedback