diff options
author | Siva Chandra <sivachandra@chromium.org> | 2014-06-05 07:03:56 -0700 |
---|---|---|
committer | Siva Chandra <sivachandra@chromium.org> | 2014-06-18 04:31:47 -0700 |
commit | 5d376983ca914e1cf36f4968cc87957f9033ebcd (patch) | |
tree | 6db5c4d47251aefdac6af4a0799a481332fa7241 /gdb/testsuite/gdb.python | |
parent | 5171def394398d2a3cc6583747e2f19602f0e1da (diff) | |
download | gdb-5d376983ca914e1cf36f4968cc87957f9033ebcd.zip gdb-5d376983ca914e1cf36f4968cc87957f9033ebcd.tar.gz gdb-5d376983ca914e1cf36f4968cc87957f9033ebcd.tar.bz2 |
Make xmethods tests not to depend on inferior IO.
gdb/testsuite/
PR gdb/17017
* gdb.python/py-xmethods.cc: Add global function call counters and
increment them in their respective functions. Remove "cout"
statements.
* gdb.python/py-xmethods.exp: Make tests check the global function
call counters instead of depending on inferior IO.
Diffstat (limited to 'gdb/testsuite/gdb.python')
-rw-r--r-- | gdb/testsuite/gdb.python/py-xmethods.cc | 32 | ||||
-rw-r--r-- | gdb/testsuite/gdb.python/py-xmethods.exp | 54 |
2 files changed, 61 insertions, 25 deletions
diff --git a/gdb/testsuite/gdb.python/py-xmethods.cc b/gdb/testsuite/gdb.python/py-xmethods.cc index 96637d8..96389fd 100644 --- a/gdb/testsuite/gdb.python/py-xmethods.cc +++ b/gdb/testsuite/gdb.python/py-xmethods.cc @@ -15,10 +15,6 @@ You should have received a copy of the GNU General Public License along with this program. If not, see <http://www.gnu.org/licenses/>. */ -#include <iostream> - -using namespace std; - namespace dop { @@ -35,24 +31,30 @@ public: A::~A () { } +int a_plus_a = 0; + int A::operator+ (const A &obj) { - cout << "From CC <A_plus_A>:" << endl; + a_plus_a++; return a + obj.a; } +int a_minus_a = 0; + int A::operator- (const A &obj) { - cout << "From CC <A_minus_A>:" << endl; + a_minus_a++; return a - obj.a; } +int a_geta = 0; + int A::geta (void) { - cout << "From CC A::geta:" << endl; + a_geta++; return a; } @@ -62,10 +64,12 @@ public: virtual int geta (void); }; +int b_geta = 0; + int B::geta (void) { - cout << "From CC B::geta:" << endl; + b_geta++; return 2 * a; } @@ -100,30 +104,36 @@ class G T t; }; +int g_size_diff = 0; + template <typename T> template <typename T1> int G<T>::size_diff () { - cout << "From CC G<>::size_diff:" << endl; + g_size_diff++; return sizeof (T1) - sizeof (T); } +int g_size_mul = 0; + template <typename T> template <int M> int G<T>::size_mul () { - cout << "From CC G<>::size_mul:" << endl; + g_size_mul++; return M * sizeof (T); } +int g_mul = 0; + template <typename T> template <typename T1> T G<T>::mul (const T1 t1) { - cout << "From CC G<>::mul:" << endl; + g_mul++; return t1 * t; } diff --git a/gdb/testsuite/gdb.python/py-xmethods.exp b/gdb/testsuite/gdb.python/py-xmethods.exp index 97b6ffa..a455a7a 100644 --- a/gdb/testsuite/gdb.python/py-xmethods.exp +++ b/gdb/testsuite/gdb.python/py-xmethods.exp @@ -40,25 +40,45 @@ gdb_breakpoint [gdb_get_line_number "Break here."] gdb_continue_to_breakpoint "Break here" ".*Break here.*" # Tests before loading the debug methods. -gdb_test "p a1 + a2" "From CC <A_plus_A>.*15" "Before: a1 + a2" -gdb_test "p a2 - a1" "From CC <A_minus_A>.*5" "Before: a1 - a2" -gdb_test "p b1 - a1" "From CC <A_minus_A>.*25" "Before: b1 - a1" -gdb_test "p a1.geta()" "From CC A::geta.*5" "Before: a1.geta()" +gdb_test "p a1 + a2" ".* = 15" "Before: a1 + a2" +gdb_test "p a_plus_a" ".* = 1" "Before: a_plus_a 1" + +gdb_test "p a2 - a1" ".* = 5" "Before: a2 - a1" +gdb_test "p a_minus_a" ".* = 1" "Before: a_minus_a 1" + +gdb_test "p b1 - a1" ".* = 25" "Before: b1 - a1" +gdb_test "p a_minus_a" ".* = 2" "Before: a_minus_a 2" + +gdb_test "p a1.geta()" ".* = 5" "Before: a1.geta()" +gdb_test "p a_geta" ".* = 1" "Before: a_geta 1" + gdb_test "p ++a1" "No symbol.*" "Before: ++a1" gdb_test "p a1.getarrayind(5)" "Couldn't find method.*" \ "Before: a1.getarrayind(5)" -gdb_test "p a_ptr->geta()" "From CC B::geta.*60" "Before: a_ptr->geta()" -gdb_test "p e.geta()" "From CC A::geta.*100" "Before: e.geta()" -gdb_test "p g.size_diff<float>()" "From CC G<>::size_diff.*" \ - "Before: g.size_diff<float>()" + +gdb_test "p a_ptr->geta()" ".* = 60" "Before: a_ptr->geta()" +gdb_test "p b_geta" ".* = 1" "Before: b_geta 1" + +gdb_test "p e.geta()" ".* = 100" "Before: e.geta()" +gdb_test "p a_geta" ".* = 2" "Before: a_geta 2" + +# Since g.size_diff operates of sizes of int and float, do not check for +# actual result value as it could be different on different platforms. +gdb_test "p g.size_diff<float>()" ".*" "Before: call g.size_diff<float>()" +gdb_test "p g_size_diff" ".* = 2" "Before: g_size_diff 2" + gdb_test "p g.size_diff<unsigned long>()" "Couldn't find method.*" \ "Before: g.size_diff<unsigned long>()" -gdb_test "p g.size_mul<2>()" "From CC G<>::size_mul.*" \ - "Before: g.size_mul<2>()" + +gdb_test "p g.size_mul<2>()" ".*" "Before: g.size_mul<2>()" +gdb_test "p g_size_mul" ".* = 2" "Before: g_size_mul 2" + gdb_test "p g.size_mul<5>()" "Couldn't find method.*" \ "Before: g.size_mul<5>()" -gdb_test "p g.mul<double>(2.0)" "From CC G<>::mul.*" \ - "Before: g.mul<double>(2.0)" + +gdb_test "p g.mul<double>(2.0)" ".* = 10" "Before: g.mul<double>(2.0)" +gdb_test "p g_mul" ".* = 2" "Before: g_mul 2" + gdb_test "p g.mul<char>('a')" "Couldn't find method.*" \ "Before: g.mul<char>('a')" @@ -67,9 +87,15 @@ gdb_test_no_output "source ${xmethods_script}" "load the script file" # Tests after loading debug methods. gdb_test "p a1 + a2" "From Python <A_plus_A>.*15" "After: a1 + a2" -gdb_test "p a2 - a1" "From CC <A_minus_A>.*5" "After: a1 - a2" + +gdb_test "p a2 - a1" ".* = 5" "After: a2 - a1" +gdb_test "p a_minus_a" ".* = 3" "After: a_minus_a 3" + gdb_test "p b1 + a1" "From Python <A_plus_A>.*35" "After: b1 + a1" -gdb_test "p b1 - a1" "From CC <A_minus_A>.*25" "After: b1 - a1" + +gdb_test "p b1 - a1" ".* = 25" "After: b1 - a1" +gdb_test "p a_minus_a" ".* = 4" "After: a_minus_a 4" + gdb_test "p a1.geta()" "From Python <A_geta>.*5" "After: a1.geta()" gdb_test "p ++a1" "From Python <plus_plus_A>.*6" "After: ++a1" gdb_test "p a1.getarrayind(5)" "From Python <A_getarrayind>.*5" \ |