77 lines · 2.0 KB · C++
RawDownload
#include "config.h" #include "test/src/test_input_path_input.h" #include <cstdlib>#include <sys/stat.h>#include <unistd.h> #include "input/path_input.h" CPPUNIT_TEST_SUITE_REGISTRATION(TestInputPathInput); voidTestInputPathInput::setUp() {  test_fixture::setUp();   char temp_dir[] = "/tmp/rtorrent_test_path_input_XXXXXX";   CPPUNIT_ASSERT(mkdtemp(temp_dir) != nullptr);   m_temp_dir = temp_dir;   CPPUNIT_ASSERT_EQUAL(0, mkdir((m_temp_dir + "/alpha").c_str(), 0755));  CPPUNIT_ASSERT_EQUAL(0, mkdir((m_temp_dir + "/alpha/beta").c_str(), 0755));} voidTestInputPathInput::tearDown() {  rmdir((m_temp_dir + "/alpha/beta").c_str());  rmdir((m_temp_dir + "/alpha").c_str());  rmdir(m_temp_dir.c_str());   test_fixture::tearDown();} // Tab at the end of the line completes the trailing component.voidTestInputPathInput::test_complete_at_end() {  input::PathInput input;   input.str() = m_temp_dir + "/al";  input.set_pos(input.str().size());   CPPUNIT_ASSERT(input.pressed('\t'));   CPPUNIT_ASSERT_EQUAL(m_temp_dir + "/alpha/", input.str());  CPPUNIT_ASSERT_EQUAL(input.str().size(), input.get_pos());} // The same completion with the cursor left inside the line. Only the text up to// the cursor selects the entry, and the rest of the line is discarded.voidTestInputPathInput::test_complete_mid_line() {  input::PathInput input;   input.str() = m_temp_dir + "/alZZZ";  input.set_pos(m_temp_dir.size() + 3);   CPPUNIT_ASSERT(input.pressed('\t'));   CPPUNIT_ASSERT_EQUAL(m_temp_dir + "/alpha/", input.str());  CPPUNIT_ASSERT_EQUAL(input.str().size(), input.get_pos());} // A cursor resting on a separator keeps completing the component after it.voidTestInputPathInput::test_cursor_on_separator() {  input::PathInput input;   input.str() = m_temp_dir + "/alpha/be";  input.set_pos(m_temp_dir.size() + 6);   CPPUNIT_ASSERT(input.pressed('\t'));   CPPUNIT_ASSERT_EQUAL(m_temp_dir + "/alpha/beta/", input.str());  CPPUNIT_ASSERT_EQUAL(input.str().size(), input.get_pos());}