summaryrefslogtreecommitdiff
path: root/test/test35.cpp
diff options
context:
space:
mode:
authorAndrei Karas <akaras@inbox.ru>2015-07-10 21:54:09 +0300
committerAndrei Karas <akaras@inbox.ru>2015-07-10 21:54:09 +0300
commit47ab3221ba7b5858bcf63e3732d20e32b06140b2 (patch)
tree0d3f3fd8ec8b6756e28d954637d1026beb70ccf8 /test/test35.cpp
parent11aec81a67f885955cd47d633e1940e144db4433 (diff)
downloadparanucker-47ab3221ba7b5858bcf63e3732d20e32b06140b2.tar.gz
paranucker-47ab3221ba7b5858bcf63e3732d20e32b06140b2.tar.bz2
paranucker-47ab3221ba7b5858bcf63e3732d20e32b06140b2.tar.xz
paranucker-47ab3221ba7b5858bcf63e3732d20e32b06140b2.zip
Add test 35. Update test results.
Diffstat (limited to 'test/test35.cpp')
-rw-r--r--test/test35.cpp140
1 files changed, 140 insertions, 0 deletions
diff --git a/test/test35.cpp b/test/test35.cpp
new file mode 100644
index 0000000..9d228db
--- /dev/null
+++ b/test/test35.cpp
@@ -0,0 +1,140 @@
+struct Data1;
+
+struct Data1
+{
+ int val;
+ Data1 *ptrval;
+ int arr[3];
+ Data1 *getData3()
+ {
+ return ptrval;
+ }
+};
+
+struct Data2 : public Data1
+{
+};
+
+int k;
+
+void paranuckerInternalTest(const char *action, const char *collection, const char *values);
+
+class Object1
+{
+ Data1 *tmp1;
+ Data1 *tmp2;
+
+ Data1 *getData1()
+ {
+ return tmp2;
+ }
+
+ Data1 *getData2() __attribute__((returns_nonnull))
+ {
+ return tmp2;
+ }
+
+ int func1()
+ {
+ Data1 *ptr1 = getData1();
+ tmp2 = ptr1;
+ if (tmp2)
+ {
+ if (k == 10)
+ {
+ int val = ptr1->val;
+ return val;
+ }
+ }
+ return 0;
+ }
+
+ void func2()
+ {
+ Data1 *ptr1 = tmp1->getData3();
+ paranuckerInternalTest("=", "knownVars", "ptr1");
+ paranuckerInternalTest("=", "knownNonNullVars", "");
+ paranuckerInternalTest("=", "knownNullVars", "");
+ paranuckerInternalTest("=", "needCheckNullVars", "ptr1");
+ paranuckerInternalTest("=", "addNullVars", "ptr1");
+ paranuckerInternalTest("=", "removeNullVarsAll", "");
+ paranuckerInternalTest("=", "linkedVars", "ptr1");
+ paranuckerInternalTest("=", "linkedVars", "this->tmp1");
+ paranuckerInternalTest("=", "linkedReverseVars", "ptr1");
+ paranuckerInternalTest("=", "linkedReverseVars", "this->tmp1");
+ while (ptr1 && ptr1->val == 3 && ptr1->ptrval)
+ {
+ paranuckerInternalTest("=", "knownVars", "ptr1");
+ paranuckerInternalTest("=", "knownNonNullVars", "ptr1");
+ paranuckerInternalTest("=", "knownNullVars", "");
+ paranuckerInternalTest("=", "needCheckNullVars", "");
+ paranuckerInternalTest("=", "addNullVars", "");
+ paranuckerInternalTest("=", "removeNullVarsAll", "");
+ paranuckerInternalTest("=", "linkedVars", "ptr1");
+ paranuckerInternalTest("=", "linkedVars", "this->tmp1");
+ paranuckerInternalTest("=", "linkedReverseVars", "ptr1");
+ paranuckerInternalTest("=", "linkedReverseVars", "this->tmp1");
+ ptr1 = ptr1->ptrval->getData3();
+ paranuckerInternalTest("=", "knownVars", "ptr1");
+ paranuckerInternalTest("=", "knownNonNullVars", "");
+ paranuckerInternalTest("=", "knownNullVars", "");
+ paranuckerInternalTest("=", "needCheckNullVars", "ptr1");
+ paranuckerInternalTest("=", "addNullVars", "ptr1");
+ paranuckerInternalTest("=", "removeNullVarsAll", "");
+ paranuckerInternalTest("=", "linkedVars", "ptr1");
+ paranuckerInternalTest("=", "linkedVars", "this->tmp1");
+ paranuckerInternalTest("=", "linkedReverseVars", "ptr1");
+ paranuckerInternalTest("=", "linkedReverseVars", "this->tmp1");
+ }
+ }
+
+ void func3()
+ {
+ Data1 *ptr1 = tmp1->getData3();
+ paranuckerInternalTest("=", "knownVars", "ptr1");
+ paranuckerInternalTest("=", "knownNonNullVars", "");
+ paranuckerInternalTest("=", "knownNullVars", "");
+ paranuckerInternalTest("=", "needCheckNullVars", "ptr1");
+ paranuckerInternalTest("=", "addNullVars", "ptr1");
+ paranuckerInternalTest("=", "removeNullVarsAll", "");
+ paranuckerInternalTest("=", "linkedVars", "ptr1");
+ paranuckerInternalTest("=", "linkedVars", "this->tmp1");
+ paranuckerInternalTest("=", "linkedReverseVars", "ptr1");
+ paranuckerInternalTest("=", "linkedReverseVars", "this->tmp1");
+ while (ptr1 && ptr1->val == 3 && ptr1->ptrval)
+ {
+ paranuckerInternalTest("=", "knownVars", "ptr1");
+ paranuckerInternalTest("=", "knownNonNullVars", "ptr1");
+ paranuckerInternalTest("=", "knownNullVars", "");
+ paranuckerInternalTest("=", "needCheckNullVars", "");
+ paranuckerInternalTest("=", "addNullVars", "");
+ paranuckerInternalTest("=", "removeNullVarsAll", "");
+ paranuckerInternalTest("=", "linkedVars", "ptr1");
+ paranuckerInternalTest("=", "linkedVars", "this->tmp1");
+ paranuckerInternalTest("=", "linkedReverseVars", "ptr1");
+ paranuckerInternalTest("=", "linkedReverseVars", "this->tmp1");
+ ptr1 = ptr1->getData3();
+ paranuckerInternalTest("=", "knownVars", "ptr1");
+ paranuckerInternalTest("=", "knownNonNullVars", "");
+ paranuckerInternalTest("=", "knownNullVars", "");
+ paranuckerInternalTest("=", "needCheckNullVars", "ptr1");
+ paranuckerInternalTest("=", "addNullVars", "ptr1");
+ paranuckerInternalTest("=", "removeNullVarsAll", "");
+ paranuckerInternalTest("=", "linkedVars", "ptr1");
+ paranuckerInternalTest("=", "linkedVars", "this->tmp1");
+ paranuckerInternalTest("=", "linkedReverseVars", "ptr1");
+ paranuckerInternalTest("=", "linkedReverseVars", "this->tmp1");
+ ptr1 = ptr1->ptrval->getData3();
+ paranuckerInternalTest("=", "knownVars", "ptr1");
+ paranuckerInternalTest("=", "knownNonNullVars", "");
+ paranuckerInternalTest("=", "knownNullVars", "");
+ paranuckerInternalTest("=", "needCheckNullVars", "ptr1");
+ paranuckerInternalTest("=", "addNullVars", "ptr1");
+ paranuckerInternalTest("=", "removeNullVarsAll", "");
+ paranuckerInternalTest("=", "linkedVars", "ptr1");
+ paranuckerInternalTest("=", "linkedVars", "this->tmp1");
+ paranuckerInternalTest("=", "linkedReverseVars", "ptr1");
+ paranuckerInternalTest("=", "linkedReverseVars", "this->tmp1");
+ }
+ }
+};