mirror of
https://github.com/rakshasa/rtorrent.git
synced 2026-08-09 03:32:29 +00:00
* Renamed 'check_hash' and added a redirect.
* Added proper torrent::Object stack type in rpc::Command. git-svn-id: svn://rakshasa.no/libtorrent/trunk/rtorrent@1160 e378c898-3ddf-0310-93e7-cc216c733640
This commit is contained in:
@@ -0,0 +1,83 @@
|
||||
#include "config.h"
|
||||
|
||||
#import "command_test.h"
|
||||
|
||||
CPPUNIT_TEST_SUITE_REGISTRATION(CommandTest);
|
||||
|
||||
bool
|
||||
command_stack_all_empty() {
|
||||
return std::find_if(rpc::Command::stack_begin(), rpc::Command::stack_end(),
|
||||
std::mem_fun_ref(&torrent::Object::is_not_empty)) == rpc::Command::stack_end();
|
||||
}
|
||||
|
||||
void
|
||||
CommandTest::test_stack() {
|
||||
torrent::Object::list_type args;
|
||||
rpc::Command::stack_type stack;
|
||||
torrent::Object* last_stack;
|
||||
|
||||
// Test empty stack.
|
||||
CPPUNIT_ASSERT(command_stack_all_empty());
|
||||
|
||||
last_stack = rpc::Command::push_stack(args, &stack);
|
||||
CPPUNIT_ASSERT(command_stack_all_empty());
|
||||
|
||||
rpc::Command::pop_stack(&stack, last_stack);
|
||||
CPPUNIT_ASSERT(command_stack_all_empty());
|
||||
|
||||
// Test stack with one.
|
||||
args.push_back(int64_t(1));
|
||||
|
||||
last_stack = rpc::Command::push_stack(args, &stack);
|
||||
CPPUNIT_ASSERT(!command_stack_all_empty());
|
||||
CPPUNIT_ASSERT(rpc::Command::stack_begin()->as_value() == 1);
|
||||
|
||||
rpc::Command::pop_stack(&stack, last_stack);
|
||||
CPPUNIT_ASSERT(command_stack_all_empty());
|
||||
|
||||
// Test stack with two
|
||||
args.clear();
|
||||
args.push_back(int64_t(2));
|
||||
args.push_back(int64_t(3));
|
||||
|
||||
last_stack = rpc::Command::push_stack(args, &stack);
|
||||
CPPUNIT_ASSERT(!command_stack_all_empty());
|
||||
CPPUNIT_ASSERT(rpc::Command::current_stack[0].as_value() == 2);
|
||||
CPPUNIT_ASSERT(rpc::Command::current_stack[1].as_value() == 3);
|
||||
|
||||
rpc::Command::pop_stack(&stack, last_stack);
|
||||
CPPUNIT_ASSERT(command_stack_all_empty());
|
||||
}
|
||||
|
||||
void
|
||||
CommandTest::test_stack_double() {
|
||||
torrent::Object::list_type args;
|
||||
rpc::Command::stack_type stack_first;
|
||||
rpc::Command::stack_type stack_second;
|
||||
torrent::Object* last_stack_first;
|
||||
torrent::Object* last_stack_second;
|
||||
|
||||
// Test double-stacked.
|
||||
args.push_back(int64_t(1));
|
||||
|
||||
last_stack_first = rpc::Command::push_stack(args, &stack_first);
|
||||
CPPUNIT_ASSERT(!command_stack_all_empty());
|
||||
CPPUNIT_ASSERT(rpc::Command::current_stack[0].as_value() == 1);
|
||||
|
||||
args.clear();
|
||||
args.push_back(int64_t(2));
|
||||
args.push_back(int64_t(3));
|
||||
|
||||
last_stack_second = rpc::Command::push_stack(args, &stack_second);
|
||||
CPPUNIT_ASSERT(!command_stack_all_empty());
|
||||
|
||||
CPPUNIT_ASSERT(rpc::Command::current_stack[0].as_value() == 2);
|
||||
CPPUNIT_ASSERT(rpc::Command::current_stack[1].as_value() == 3);
|
||||
|
||||
rpc::Command::pop_stack(&stack_second, last_stack_second);
|
||||
CPPUNIT_ASSERT(!command_stack_all_empty());
|
||||
CPPUNIT_ASSERT(rpc::Command::current_stack[0].as_value() == 1);
|
||||
|
||||
rpc::Command::pop_stack(&stack_first, last_stack_first);
|
||||
CPPUNIT_ASSERT(command_stack_all_empty());
|
||||
}
|
||||
Reference in New Issue
Block a user