tstUuid.cpp revision c1ec0862a43a7fbb25c5e1f3243f67c1f787d4eb
ae0f2178b9a5aded928e0245cb830ba1d3d04c57vboxsync/* $Id$ */
ae0f2178b9a5aded928e0245cb830ba1d3d04c57vboxsync/** @file
ae0f2178b9a5aded928e0245cb830ba1d3d04c57vboxsync * InnoTek Portable Runtime Testcase - UUID.
ae0f2178b9a5aded928e0245cb830ba1d3d04c57vboxsync */
ae0f2178b9a5aded928e0245cb830ba1d3d04c57vboxsync
e64031e20c39650a7bc902a3e1aba613b9415deevboxsync/*
ae0f2178b9a5aded928e0245cb830ba1d3d04c57vboxsync * Copyright (C) 2006 InnoTek Systemberatung GmbH
82bcaaf8077ba892f39afb721dca149353c63d2cvboxsync *
82bcaaf8077ba892f39afb721dca149353c63d2cvboxsync * This file is part of VirtualBox Open Source Edition (OSE), as
82bcaaf8077ba892f39afb721dca149353c63d2cvboxsync * available from http://www.virtualbox.org. This file is free software;
82bcaaf8077ba892f39afb721dca149353c63d2cvboxsync * you can redistribute it and/or modify it under the terms of the GNU
82bcaaf8077ba892f39afb721dca149353c63d2cvboxsync * General Public License as published by the Free Software Foundation,
82bcaaf8077ba892f39afb721dca149353c63d2cvboxsync * in version 2 as it comes in the "COPYING" file of the VirtualBox OSE
82bcaaf8077ba892f39afb721dca149353c63d2cvboxsync * distribution. VirtualBox OSE is distributed in the hope that it will
ae0f2178b9a5aded928e0245cb830ba1d3d04c57vboxsync * be useful, but WITHOUT ANY WARRANTY of any kind.
ae0f2178b9a5aded928e0245cb830ba1d3d04c57vboxsync *
ae0f2178b9a5aded928e0245cb830ba1d3d04c57vboxsync * If you received this file as part of a commercial VirtualBox
ae0f2178b9a5aded928e0245cb830ba1d3d04c57vboxsync * distribution, then only the terms of your commercial VirtualBox
ae0f2178b9a5aded928e0245cb830ba1d3d04c57vboxsync * license agreement apply instead of the previous paragraph.
b6cba2c351e97805b97998ebe48e03ecef16b59avboxsync */
43747b1f0bc8302a238fb35e55857a5e9aa1933dvboxsync
ae0f2178b9a5aded928e0245cb830ba1d3d04c57vboxsync
ae0f2178b9a5aded928e0245cb830ba1d3d04c57vboxsync/*******************************************************************************
ae0f2178b9a5aded928e0245cb830ba1d3d04c57vboxsync* Header Files *
ae0f2178b9a5aded928e0245cb830ba1d3d04c57vboxsync*******************************************************************************/
ae0f2178b9a5aded928e0245cb830ba1d3d04c57vboxsync#include <iprt/uuid.h>
ae0f2178b9a5aded928e0245cb830ba1d3d04c57vboxsync#include <iprt/stream.h>
ae0f2178b9a5aded928e0245cb830ba1d3d04c57vboxsync#include <iprt/err.h>
ae0f2178b9a5aded928e0245cb830ba1d3d04c57vboxsync
f5e53763b0a581b0299e98028c6c52192eb06785vboxsync
ae0f2178b9a5aded928e0245cb830ba1d3d04c57vboxsyncint main(int argc, char **argv)
ae0f2178b9a5aded928e0245cb830ba1d3d04c57vboxsync{
ae0f2178b9a5aded928e0245cb830ba1d3d04c57vboxsync int rc;
ae0f2178b9a5aded928e0245cb830ba1d3d04c57vboxsync int cErrors = 0;
ae0f2178b9a5aded928e0245cb830ba1d3d04c57vboxsync
ae0f2178b9a5aded928e0245cb830ba1d3d04c57vboxsync#define CHECK_RC() \
ae0f2178b9a5aded928e0245cb830ba1d3d04c57vboxsync do { if (RT_FAILURE(rc)) { RTPrintf("tstUuid(%d): rc=%Vrc!\n", __LINE__, rc); cErrors++; } } while (0)
ae0f2178b9a5aded928e0245cb830ba1d3d04c57vboxsync#define CHECK_EXPR(expr) \
8112e0942f1128329b99b22a20b395963d4abceavboxsync do { const bool f = !!(expr); if (!f) { RTPrintf("tstUuid(%d): %s!\n", __LINE__, #expr); cErrors++; } } while (0)
8112e0942f1128329b99b22a20b395963d4abceavboxsync
ae0f2178b9a5aded928e0245cb830ba1d3d04c57vboxsync RTUUID UuidNull;
ae0f2178b9a5aded928e0245cb830ba1d3d04c57vboxsync rc = RTUuidClear(&UuidNull); CHECK_RC();
ae0f2178b9a5aded928e0245cb830ba1d3d04c57vboxsync CHECK_EXPR(RTUuidIsNull(&UuidNull));
ae0f2178b9a5aded928e0245cb830ba1d3d04c57vboxsync CHECK_EXPR(RTUuidCompare(&UuidNull, &UuidNull) == 0);
874be5c5b701726b68fa1391022ae2f5c7768894vboxsync
ae0f2178b9a5aded928e0245cb830ba1d3d04c57vboxsync RTUUID Uuid;
ae0f2178b9a5aded928e0245cb830ba1d3d04c57vboxsync rc = RTUuidCreate(&Uuid); CHECK_RC();
ae0f2178b9a5aded928e0245cb830ba1d3d04c57vboxsync CHECK_EXPR(!RTUuidIsNull(&Uuid));
ae0f2178b9a5aded928e0245cb830ba1d3d04c57vboxsync CHECK_EXPR(RTUuidCompare(&Uuid, &Uuid) == 0);
ae0f2178b9a5aded928e0245cb830ba1d3d04c57vboxsync CHECK_EXPR(RTUuidCompare(&Uuid, &UuidNull) > 0);
ae0f2178b9a5aded928e0245cb830ba1d3d04c57vboxsync CHECK_EXPR(RTUuidCompare(&UuidNull, &Uuid) < 0);
ae0f2178b9a5aded928e0245cb830ba1d3d04c57vboxsync
8112e0942f1128329b99b22a20b395963d4abceavboxsync char sz[RTUUID_STR_LENGTH];
ae0f2178b9a5aded928e0245cb830ba1d3d04c57vboxsync rc = RTUuidToStr(&Uuid, sz, sizeof(sz)); CHECK_RC();
ae0f2178b9a5aded928e0245cb830ba1d3d04c57vboxsync RTUUID Uuid2;
ae0f2178b9a5aded928e0245cb830ba1d3d04c57vboxsync rc = RTUuidFromStr(&Uuid2, sz); CHECK_RC();
ae0f2178b9a5aded928e0245cb830ba1d3d04c57vboxsync CHECK_EXPR(RTUuidCompare(&Uuid, &Uuid2) == 0);
ae0f2178b9a5aded928e0245cb830ba1d3d04c57vboxsync
ae0f2178b9a5aded928e0245cb830ba1d3d04c57vboxsync /*
ae0f2178b9a5aded928e0245cb830ba1d3d04c57vboxsync * Summary.
ae0f2178b9a5aded928e0245cb830ba1d3d04c57vboxsync */
ae0f2178b9a5aded928e0245cb830ba1d3d04c57vboxsync if (!cErrors)
ae0f2178b9a5aded928e0245cb830ba1d3d04c57vboxsync RTPrintf("tstUuid: SUCCESS {%s}\n", sz);
ae0f2178b9a5aded928e0245cb830ba1d3d04c57vboxsync else
ae0f2178b9a5aded928e0245cb830ba1d3d04c57vboxsync RTPrintf("tstUuid: FAILED - %d errors\n", cErrors);
ae0f2178b9a5aded928e0245cb830ba1d3d04c57vboxsync return !!cErrors;
ae0f2178b9a5aded928e0245cb830ba1d3d04c57vboxsync}
ae0f2178b9a5aded928e0245cb830ba1d3d04c57vboxsync
ae0f2178b9a5aded928e0245cb830ba1d3d04c57vboxsync