VirtualBox

source: vbox/trunk/src/VBox/GuestHost/DragAndDrop/testcase/tstDnDTransferList.cpp@ 85381

Last change on this file since 85381 was 85381, checked in by vboxsync, 5 years ago

DnD/testcase: export fix

  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
File size: 5.3 KB
Line 
1/* $Id: tstDnDTransferList.cpp 85381 2020-07-18 10:04:38Z vboxsync $ */
2/** @file
3 * DnD transfer list tests.
4 */
5
6/*
7 * Copyright (C) 2020 Oracle Corporation
8 *
9 * This file is part of VirtualBox Open Source Edition (OSE), as
10 * available from http://www.virtualbox.org. This file is free software;
11 * you can redistribute it and/or modify it under the terms of the GNU
12 * General Public License (GPL) as published by the Free Software
13 * Foundation, in version 2 as it comes in the "COPYING" file of the
14 * VirtualBox OSE distribution. VirtualBox OSE is distributed in the
15 * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
16 */
17
18#include <iprt/assert.h>
19#include <iprt/env.h>
20#include <iprt/err.h>
21#include <iprt/path.h>
22#include <iprt/string.h>
23#include <iprt/test.h>
24
25#include <VBox/GuestHost/DragAndDrop.h>
26
27
28int main()
29{
30 /*
31 * Init the runtime, test and say hello.
32 */
33 RTTEST hTest;
34 int rc = RTTestInitAndCreate("tstDnDTransferList", &hTest);
35 if (rc)
36 return rc;
37 RTTestBanner(hTest);
38
39 char szPathWellKnown[RTPATH_MAX];
40 RTStrCopy(szPathWellKnown, sizeof(szPathWellKnown),
41#ifdef RT_OS_WINDOWS
42 "C:\\Windows\\INF\\");
43#else
44 "/bin/");
45#endif
46
47 DNDTRANSFERLIST list;
48 RT_ZERO(list);
49
50 /* Invalid stuff. */
51 /*RTTEST_CHECK_RC(hTest, DnDTransferListInit(&list, NULL), VERR_INVALID_POINTER);*/
52 RTTEST_CHECK_RC(hTest, DnDTransferListInit(&list, ""), VERR_INVALID_PARAMETER);
53 RTTEST_CHECK_RC(hTest, DnDTransferListInit(&list, szPathWellKnown), VINF_SUCCESS);
54 RTTEST_CHECK_RC(hTest, DnDTransferListInit(&list, szPathWellKnown), VERR_WRONG_ORDER);
55 DnDTransferListDestroy(&list);
56
57 /* Initial status. */
58 RTTEST_CHECK_RC(hTest, DnDTransferListInit(&list, szPathWellKnown), VINF_SUCCESS);
59 RTTEST_CHECK(hTest, DnDTransferListGetRootCount(&list) == 0);
60 RTTEST_CHECK(hTest, DnDTransferListObjCount(&list) == 0);
61 RTTEST_CHECK(hTest, DnDTransferListObjTotalBytes(&list) == 0);
62 RTTEST_CHECK(hTest, DnDTransferListObjGetFirst(&list) == NULL);
63
64 char szPathTest[RTPATH_MAX];
65
66 /* Root path handling. */
67 RTTEST_CHECK_RC(hTest, DnDTransferListAppendPath(&list, DNDTRANSFERLISTFMT_NATIVE, "/wrong/root/path", DNDTRANSFERLIST_FLAGS_NONE), VERR_INVALID_PARAMETER);
68 rc = RTPathJoin(szPathTest, sizeof(szPathTest), szPathWellKnown, "/non/existing");
69 AssertRCReturn(rc, RTEXITCODE_FAILURE);
70 RTTEST_CHECK_RC(hTest, DnDTransferListAppendPath(&list, DNDTRANSFERLISTFMT_NATIVE, szPathTest, DNDTRANSFERLIST_FLAGS_NONE), VERR_PATH_NOT_FOUND);
71
72 /* Adding stuff. */
73 RTTEST_CHECK_RC(hTest, DnDTransferListAppendPath(&list, DNDTRANSFERLISTFMT_NATIVE, szPathWellKnown, DNDTRANSFERLIST_FLAGS_NONE), VINF_SUCCESS);
74 RTTEST_CHECK(hTest, DnDTransferListGetRootCount(&list));
75 RTTEST_CHECK(hTest, DnDTransferListObjCount(&list));
76
77 char *pszString = NULL;
78 size_t cbString = 0;
79 RTTEST_CHECK_RC_OK(hTest, DnDTransferListGetRoots(&list, DNDTRANSFERLISTFMT_NATIVE, &pszString, &cbString));
80 RTTestPrintf(hTest, RTTESTLVL_DEBUG, "Root: %s\n", pszString);
81 RTStrFree(pszString);
82 RTTestPrintf(hTest, RTTESTLVL_DEBUG, "\n");
83
84 PDNDTRANSFEROBJECT pObj;
85 while ((pObj = DnDTransferListObjGetFirst(&list)))
86 {
87 RTTestPrintf(hTest, RTTESTLVL_DEBUG, "Obj: %s\n", DnDTransferObjectGetDestPath(pObj));
88 DnDTransferListObjRemoveFirst(&list);
89 }
90 DnDTransferListDestroy(&list);
91
92 char *pszBuf;
93 size_t cbBuf;
94
95 /* To URI data. */
96 RTTEST_CHECK_RC(hTest, DnDTransferListInit(&list, szPathWellKnown), VINF_SUCCESS);
97 RTTEST_CHECK_RC(hTest, DnDTransferListAppendPath(&list, DNDTRANSFERLISTFMT_NATIVE, szPathWellKnown, DNDTRANSFERLIST_FLAGS_NONE), VINF_SUCCESS);
98 RTTEST_CHECK_RC(hTest, DnDTransferListGetRootsEx(&list, DNDTRANSFERLISTFMT_NATIVE, "" /* pszBasePath */, "\n", &pszBuf, &cbBuf), VINF_SUCCESS);
99 RTTestPrintf(hTest, RTTESTLVL_DEBUG, "Roots (native):\n%s\n", pszBuf);
100 RTStrFree(pszBuf);
101 RTTEST_CHECK_RC(hTest, DnDTransferListGetRootsEx(&list, DNDTRANSFERLISTFMT_URI, "" /* pszBasePath */, "\n", &pszBuf, &cbBuf), VINF_SUCCESS);
102 RTTestPrintf(hTest, RTTESTLVL_DEBUG, "Roots (URI):\n%s\n", pszBuf);
103 RTStrFree(pszBuf);
104 RTTEST_CHECK_RC(hTest, DnDTransferListGetRootsEx(&list, DNDTRANSFERLISTFMT_URI, "\\new\\base\\path", "\n", &pszBuf, &cbBuf), VINF_SUCCESS);
105 RTTestPrintf(hTest, RTTESTLVL_ALWAYS, "Roots (URI, new base):\n%s\n", pszBuf);
106 RTStrFree(pszBuf);
107 RTTEST_CHECK_RC(hTest, DnDTransferListGetRootsEx(&list, DNDTRANSFERLISTFMT_URI, "\\..\\invalid\\path", "\n", &pszBuf, &cbBuf), VERR_INVALID_PARAMETER);
108 DnDTransferListDestroy(&list);
109
110 /* From URI data. */
111 const char szURI[] = "file:///file1\r\n"
112 "file:///file2\r\n"
113 "file:///dir1\r\n"
114 "file:///dir%20with%20spaces\r\n";
115 RTTEST_CHECK_RC(hTest, DnDTransferListAppendPathsFromBuffer(&list, DNDTRANSFERLISTFMT_URI, szURI, sizeof(szURI), "\r\n",
116 DNDTRANSFERLIST_FLAGS_NONE), VINF_SUCCESS);
117 RTTEST_CHECK(hTest, DnDTransferListGetRootCount(&list) == 4);
118 RTTEST_CHECK_RC(hTest, DnDTransferListGetRootsEx(&list, DNDTRANSFERLISTFMT_NATIVE, "/native/base/path", "\n", &pszBuf, &cbBuf), VINF_SUCCESS);
119 RTTestPrintf(hTest, RTTESTLVL_ALWAYS, "Roots (URI, new base):\n%s\n", pszBuf);
120 RTStrFree(pszBuf);
121
122 return RTTestSummaryAndDestroy(hTest);
123}
124
Note: See TracBrowser for help on using the repository browser.

© 2024 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette