395cc0446583ac5a00c8f4a2f0a64ab009e8d636vboxsync/* $Id$ */
395cc0446583ac5a00c8f4a2f0a64ab009e8d636vboxsync/** @file
395cc0446583ac5a00c8f4a2f0a64ab009e8d636vboxsync * API Glue Testcase - Guid.
395cc0446583ac5a00c8f4a2f0a64ab009e8d636vboxsync */
395cc0446583ac5a00c8f4a2f0a64ab009e8d636vboxsync
395cc0446583ac5a00c8f4a2f0a64ab009e8d636vboxsync/*
395cc0446583ac5a00c8f4a2f0a64ab009e8d636vboxsync * Copyright (C) 2013-2014 Oracle Corporation
395cc0446583ac5a00c8f4a2f0a64ab009e8d636vboxsync *
395cc0446583ac5a00c8f4a2f0a64ab009e8d636vboxsync * This file is part of VirtualBox Open Source Edition (OSE), as
395cc0446583ac5a00c8f4a2f0a64ab009e8d636vboxsync * available from http://www.virtualbox.org. This file is free software;
395cc0446583ac5a00c8f4a2f0a64ab009e8d636vboxsync * you can redistribute it and/or modify it under the terms of the GNU
395cc0446583ac5a00c8f4a2f0a64ab009e8d636vboxsync * General Public License (GPL) as published by the Free Software
395cc0446583ac5a00c8f4a2f0a64ab009e8d636vboxsync * Foundation, in version 2 as it comes in the "COPYING" file of the
395cc0446583ac5a00c8f4a2f0a64ab009e8d636vboxsync * VirtualBox OSE distribution. VirtualBox OSE is distributed in the
395cc0446583ac5a00c8f4a2f0a64ab009e8d636vboxsync * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
395cc0446583ac5a00c8f4a2f0a64ab009e8d636vboxsync */
395cc0446583ac5a00c8f4a2f0a64ab009e8d636vboxsync
395cc0446583ac5a00c8f4a2f0a64ab009e8d636vboxsync/*******************************************************************************
395cc0446583ac5a00c8f4a2f0a64ab009e8d636vboxsync* Header Files *
395cc0446583ac5a00c8f4a2f0a64ab009e8d636vboxsync*******************************************************************************/
395cc0446583ac5a00c8f4a2f0a64ab009e8d636vboxsync#include <VBox/com/Guid.h>
395cc0446583ac5a00c8f4a2f0a64ab009e8d636vboxsync
395cc0446583ac5a00c8f4a2f0a64ab009e8d636vboxsync#include <iprt/err.h>
395cc0446583ac5a00c8f4a2f0a64ab009e8d636vboxsync#include <iprt/mem.h>
395cc0446583ac5a00c8f4a2f0a64ab009e8d636vboxsync#include <iprt/string.h>
395cc0446583ac5a00c8f4a2f0a64ab009e8d636vboxsync#include <iprt/test.h>
395cc0446583ac5a00c8f4a2f0a64ab009e8d636vboxsync#include <iprt/uni.h>
395cc0446583ac5a00c8f4a2f0a64ab009e8d636vboxsync
395cc0446583ac5a00c8f4a2f0a64ab009e8d636vboxsync
395cc0446583ac5a00c8f4a2f0a64ab009e8d636vboxsyncstatic void test1(RTTEST hTest)
395cc0446583ac5a00c8f4a2f0a64ab009e8d636vboxsync{
395cc0446583ac5a00c8f4a2f0a64ab009e8d636vboxsync RTTestSub(hTest, "Basics");
395cc0446583ac5a00c8f4a2f0a64ab009e8d636vboxsync
395cc0446583ac5a00c8f4a2f0a64ab009e8d636vboxsync#define CHECK(expr) RTTESTI_CHECK(expr)
395cc0446583ac5a00c8f4a2f0a64ab009e8d636vboxsync#define CHECK_DUMP(expr, value) \
395cc0446583ac5a00c8f4a2f0a64ab009e8d636vboxsync do { \
395cc0446583ac5a00c8f4a2f0a64ab009e8d636vboxsync if (!(expr)) \
395cc0446583ac5a00c8f4a2f0a64ab009e8d636vboxsync RTTestFailed(hTest, "%d: FAILED %s, got \"%s\"", __LINE__, #expr, value); \
395cc0446583ac5a00c8f4a2f0a64ab009e8d636vboxsync } while (0)
395cc0446583ac5a00c8f4a2f0a64ab009e8d636vboxsync
395cc0446583ac5a00c8f4a2f0a64ab009e8d636vboxsync#define CHECK_DUMP_I(expr) \
395cc0446583ac5a00c8f4a2f0a64ab009e8d636vboxsync do { \
395cc0446583ac5a00c8f4a2f0a64ab009e8d636vboxsync if (!(expr)) \
395cc0446583ac5a00c8f4a2f0a64ab009e8d636vboxsync RTTestFailed(hTest, "%d: FAILED %s, got \"%d\"", __LINE__, #expr, expr); \
395cc0446583ac5a00c8f4a2f0a64ab009e8d636vboxsync } while (0)
395cc0446583ac5a00c8f4a2f0a64ab009e8d636vboxsync#define CHECK_EQUAL(Str, szExpect) \
395cc0446583ac5a00c8f4a2f0a64ab009e8d636vboxsync do { \
395cc0446583ac5a00c8f4a2f0a64ab009e8d636vboxsync if (!(Str).equals(szExpect)) \
395cc0446583ac5a00c8f4a2f0a64ab009e8d636vboxsync RTTestIFailed("line %u: expected \"%s\" got \"%s\"", __LINE__, szExpect, (Str).c_str()); \
395cc0446583ac5a00c8f4a2f0a64ab009e8d636vboxsync } while (0)
395cc0446583ac5a00c8f4a2f0a64ab009e8d636vboxsync#define CHECK_EQUAL_I(iRes, iExpect) \
395cc0446583ac5a00c8f4a2f0a64ab009e8d636vboxsync do { \
395cc0446583ac5a00c8f4a2f0a64ab009e8d636vboxsync if (iRes != iExpect) \
395cc0446583ac5a00c8f4a2f0a64ab009e8d636vboxsync RTTestIFailed("line %u: expected \"%zd\" got \"%zd\"", __LINE__, iExpect, iRes); \
395cc0446583ac5a00c8f4a2f0a64ab009e8d636vboxsync } while (0)
395cc0446583ac5a00c8f4a2f0a64ab009e8d636vboxsync
395cc0446583ac5a00c8f4a2f0a64ab009e8d636vboxsync com::Guid zero;
395cc0446583ac5a00c8f4a2f0a64ab009e8d636vboxsync CHECK(zero.isZero());
395cc0446583ac5a00c8f4a2f0a64ab009e8d636vboxsync
395cc0446583ac5a00c8f4a2f0a64ab009e8d636vboxsync com::Guid copyZero(zero);
395cc0446583ac5a00c8f4a2f0a64ab009e8d636vboxsync CHECK(copyZero.isZero());
395cc0446583ac5a00c8f4a2f0a64ab009e8d636vboxsync
395cc0446583ac5a00c8f4a2f0a64ab009e8d636vboxsync com::Guid assignZero(zero);
395cc0446583ac5a00c8f4a2f0a64ab009e8d636vboxsync CHECK(assignZero.isZero());
395cc0446583ac5a00c8f4a2f0a64ab009e8d636vboxsync
395cc0446583ac5a00c8f4a2f0a64ab009e8d636vboxsync com::Guid random;
395cc0446583ac5a00c8f4a2f0a64ab009e8d636vboxsync random.create();
395cc0446583ac5a00c8f4a2f0a64ab009e8d636vboxsync CHECK(!random.isZero());
395cc0446583ac5a00c8f4a2f0a64ab009e8d636vboxsync
395cc0446583ac5a00c8f4a2f0a64ab009e8d636vboxsync com::Guid copyRandom(random);
395cc0446583ac5a00c8f4a2f0a64ab009e8d636vboxsync CHECK(!copyRandom.isZero());
395cc0446583ac5a00c8f4a2f0a64ab009e8d636vboxsync
395cc0446583ac5a00c8f4a2f0a64ab009e8d636vboxsync com::Guid assignRandom(random);
395cc0446583ac5a00c8f4a2f0a64ab009e8d636vboxsync CHECK(!assignRandom.isZero());
395cc0446583ac5a00c8f4a2f0a64ab009e8d636vboxsync
395cc0446583ac5a00c8f4a2f0a64ab009e8d636vboxsync /** @todo extend this a lot, it needs to cover many more cases */
395cc0446583ac5a00c8f4a2f0a64ab009e8d636vboxsync
395cc0446583ac5a00c8f4a2f0a64ab009e8d636vboxsync#undef CHECK
395cc0446583ac5a00c8f4a2f0a64ab009e8d636vboxsync#undef CHECK_DUMP
395cc0446583ac5a00c8f4a2f0a64ab009e8d636vboxsync#undef CHECK_DUMP_I
395cc0446583ac5a00c8f4a2f0a64ab009e8d636vboxsync#undef CHECK_EQUAL
395cc0446583ac5a00c8f4a2f0a64ab009e8d636vboxsync}
395cc0446583ac5a00c8f4a2f0a64ab009e8d636vboxsync
395cc0446583ac5a00c8f4a2f0a64ab009e8d636vboxsync
395cc0446583ac5a00c8f4a2f0a64ab009e8d636vboxsyncint main()
395cc0446583ac5a00c8f4a2f0a64ab009e8d636vboxsync{
395cc0446583ac5a00c8f4a2f0a64ab009e8d636vboxsync RTTEST hTest;
395cc0446583ac5a00c8f4a2f0a64ab009e8d636vboxsync RTEXITCODE rcExit = RTTestInitAndCreate("tstGuid", &hTest);
395cc0446583ac5a00c8f4a2f0a64ab009e8d636vboxsync if (rcExit == RTEXITCODE_SUCCESS)
395cc0446583ac5a00c8f4a2f0a64ab009e8d636vboxsync {
395cc0446583ac5a00c8f4a2f0a64ab009e8d636vboxsync RTTestBanner(hTest);
395cc0446583ac5a00c8f4a2f0a64ab009e8d636vboxsync
395cc0446583ac5a00c8f4a2f0a64ab009e8d636vboxsync test1(hTest);
395cc0446583ac5a00c8f4a2f0a64ab009e8d636vboxsync
395cc0446583ac5a00c8f4a2f0a64ab009e8d636vboxsync rcExit = RTTestSummaryAndDestroy(hTest);
395cc0446583ac5a00c8f4a2f0a64ab009e8d636vboxsync }
395cc0446583ac5a00c8f4a2f0a64ab009e8d636vboxsync return rcExit;
395cc0446583ac5a00c8f4a2f0a64ab009e8d636vboxsync}
395cc0446583ac5a00c8f4a2f0a64ab009e8d636vboxsync