diff options
author | Andrei Karas <akaras@inbox.ru> | 2015-07-03 19:35:55 +0300 |
---|---|---|
committer | Andrei Karas <akaras@inbox.ru> | 2015-07-03 19:35:55 +0300 |
commit | ade715ffe212a72abb84bc9e740685f10508cfbd (patch) | |
tree | 4f3495cd7292fce4f5233ed80e36753b65aa85d7 /test/test30.cpp | |
parent | 3a2cf0ac8858e6f181642d84d58ff24a001873fd (diff) | |
download | paranucker-ade715ffe212a72abb84bc9e740685f10508cfbd.tar.gz paranucker-ade715ffe212a72abb84bc9e740685f10508cfbd.tar.bz2 paranucker-ade715ffe212a72abb84bc9e740685f10508cfbd.tar.xz paranucker-ade715ffe212a72abb84bc9e740685f10508cfbd.zip |
Add test 30.
Diffstat (limited to 'test/test30.cpp')
-rw-r--r-- | test/test30.cpp | 120 |
1 files changed, 120 insertions, 0 deletions
diff --git a/test/test30.cpp b/test/test30.cpp new file mode 100644 index 0000000..b2e049c --- /dev/null +++ b/test/test30.cpp @@ -0,0 +1,120 @@ +struct Data1; + +struct Data1 +{ + int val; + Data1 *ptrval; + int arr[3]; +}; + +struct Data2 : public Data1 +{ +}; + +int k; + +void paranuckerInternalTest(const char *action, const char *collection, const char *values); + +class Object1 +{ + Data1 *tmp1; + Data1 *tmp2; + + Data1 *getData() + { + return tmp1; + } + + void func1(Data1 *ptr1) + { + paranuckerInternalTest("=", "knownVars", "ptr1"); + paranuckerInternalTest("=", "knownNonNullVars", ""); + paranuckerInternalTest("=", "knownNullVars", ""); + paranuckerInternalTest("=", "needCheckNullVars", "ptr1"); + // null || 9 -> return + // null || 10 -> return + // 123 || 9 -> continue + // 123 || 10 -> return + if (!ptr1 || ptr1->val == 10) + { + paranuckerInternalTest("=", "knownVars", "ptr1"); + paranuckerInternalTest("=", "knownNonNullVars", ""); + paranuckerInternalTest("=", "knownNullVars", ""); + paranuckerInternalTest("=", "needCheckNullVars", "ptr1"); + return; + } + else + { + paranuckerInternalTest("=", "knownVars", "ptr1"); + paranuckerInternalTest("=", "knownNonNullVars", "ptr1"); + paranuckerInternalTest("=", "knownNullVars", ""); + paranuckerInternalTest("=", "needCheckNullVars", ""); + } + paranuckerInternalTest("=", "knownVars", "ptr1"); + paranuckerInternalTest("=", "knownNonNullVars", "ptr1"); + paranuckerInternalTest("=", "knownNullVars", ""); + paranuckerInternalTest("=", "needCheckNullVars", ""); + } + + void func2(Data1 *ptr1) + { + paranuckerInternalTest("=", "knownVars", "ptr1"); + paranuckerInternalTest("=", "knownNonNullVars", ""); + paranuckerInternalTest("=", "knownNullVars", ""); + paranuckerInternalTest("=", "needCheckNullVars", "ptr1"); + // null && 9 -> continue + // null && 10 -> return + // 123 && 9 -> continue + // 123 && 10 -> continue + if (!ptr1 && ptr1->val == 10) + { + paranuckerInternalTest("=", "knownVars", "ptr1"); + paranuckerInternalTest("=", "knownNonNullVars", ""); + paranuckerInternalTest("=", "knownNullVars", "ptr1"); + paranuckerInternalTest("=", "needCheckNullVars", "ptr1"); + return; + } + else + { + paranuckerInternalTest("=", "knownVars", "ptr1"); + paranuckerInternalTest("=", "knownNonNullVars", ""); + paranuckerInternalTest("=", "knownNullVars", ""); + paranuckerInternalTest("=", "needCheckNullVars", "ptr1"); + } + paranuckerInternalTest("=", "knownVars", "ptr1"); + paranuckerInternalTest("=", "knownNonNullVars", ""); + paranuckerInternalTest("=", "knownNullVars", ""); + paranuckerInternalTest("=", "needCheckNullVars", "ptr1"); + } + + void func3(Data1 *ptr1) + { + paranuckerInternalTest("=", "knownVars", "ptr1"); + paranuckerInternalTest("=", "knownNonNullVars", ""); + paranuckerInternalTest("=", "knownNullVars", ""); + paranuckerInternalTest("=", "needCheckNullVars", "ptr1"); + // null && 9 -> continue + // null && 10 -> continue + // 123 && 9 -> continue + // 123 && 10 -> return + if (ptr1 && ptr1->val == 10) + { + paranuckerInternalTest("=", "knownVars", "ptr1"); + paranuckerInternalTest("=", "knownNonNullVars", "ptr1"); + paranuckerInternalTest("=", "knownNullVars", ""); + paranuckerInternalTest("=", "needCheckNullVars", ""); + return; + } + else + { + paranuckerInternalTest("=", "knownVars", "ptr1"); + paranuckerInternalTest("=", "knownNonNullVars", ""); + paranuckerInternalTest("=", "knownNullVars", ""); + paranuckerInternalTest("=", "needCheckNullVars", "ptr1"); + } + paranuckerInternalTest("=", "knownVars", "ptr1"); + paranuckerInternalTest("=", "knownNonNullVars", ""); + paranuckerInternalTest("=", "knownNullVars", ""); + paranuckerInternalTest("=", "needCheckNullVars", "ptr1"); + } +}; |