summaryrefslogtreecommitdiff
path: root/sal/qa/rtl/random/rtl_random.cxx
diff options
context:
space:
mode:
Diffstat (limited to 'sal/qa/rtl/random/rtl_random.cxx')
-rw-r--r--sal/qa/rtl/random/rtl_random.cxx418
1 files changed, 0 insertions, 418 deletions
diff --git a/sal/qa/rtl/random/rtl_random.cxx b/sal/qa/rtl/random/rtl_random.cxx
deleted file mode 100644
index 411e89732..000000000
--- a/sal/qa/rtl/random/rtl_random.cxx
+++ /dev/null
@@ -1,418 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2000, 2010 Oracle and/or its affiliates.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-
-// MARKER(update_precomp.py): autogen include statement, do not remove
-#include "precompiled_sal.hxx"
-
-#include <algorithm>
-
-#include <cppunit/TestAssert.h>
-#include <cppunit/TestFixture.h>
-#include <cppunit/extensions/HelperMacros.h>
-#include <cppunit/plugin/TestPlugIn.h>
-
-#include <osl/diagnose.h>
-#include <rtl/random.h>
-
-#include <string.h>
-
-namespace rtl_random
-{
-
-class createPool : public CppUnit::TestFixture
-{
-public:
- // initialise your test code values here.
- void setUp()
- {
- }
-
- void tearDown()
- {
- }
-
- // insert your test code here.
- // this is only demonstration code
- void createPool_001()
- {
- // this is demonstration code
-
- rtlRandomPool aPool = rtl_random_createPool();
-
- // LLA: seems to be that an other test is not possible for createPool()
- CPPUNIT_ASSERT_MESSAGE("create failed", aPool != NULL);
-
- rtl_random_destroyPool(aPool);
- }
-
- // Change the following lines only, if you add, remove or rename
- // member functions of the current class,
- // because these macros are need by auto register mechanism.
-
- CPPUNIT_TEST_SUITE(createPool);
- CPPUNIT_TEST(createPool_001);
- CPPUNIT_TEST_SUITE_END();
-}; // class createPool
-
-
-class destroyPool : public CppUnit::TestFixture
-{
-public:
- // initialise your test code values here.
- void setUp()
- {
- }
-
- void tearDown()
- {
- }
-
- // insert your test code here.
- void destroyPool_000()
- {
- // GPF, if failed
- rtl_random_destroyPool(NULL);
- }
-
- void destroyPool_001()
- {
- rtlRandomPool aPool = rtl_random_createPool();
-
- // LLA: seems to be that an other test is not possible for createPool()
- CPPUNIT_ASSERT_MESSAGE("create failed", aPool != NULL);
-
- rtl_random_destroyPool(aPool);
- }
- // Change the following lines only, if you add, remove or rename
- // member functions of the current class,
- // because these macros are need by auto register mechanism.
-
- CPPUNIT_TEST_SUITE(destroyPool);
- CPPUNIT_TEST(destroyPool_000);
- CPPUNIT_TEST(destroyPool_001);
- CPPUNIT_TEST_SUITE_END();
-}; // class destroyPool
-
-
-class addBytes : public CppUnit::TestFixture
-{
-public:
- // initialise your test code values here.
- void setUp()
- {
- }
-
- void tearDown()
- {
- }
-
- // insert your test code here.
- // this is only demonstration code
- void addBytes_000()
- {
- rtlRandomPool aPool = rtl_random_createPool();
-
- sal_uInt32 nBufLen = 4;
- sal_uInt8 *pBuffer = new sal_uInt8[ nBufLen ];
- memset(pBuffer, 0, nBufLen);
-
- rtlRandomError aError = rtl_random_addBytes(NULL, NULL, 0);
- CPPUNIT_ASSERT_MESSAGE("wrong parameter", aError == rtl_Random_E_Argument);
-
- /* rtlRandomError */ aError = rtl_random_addBytes(aPool, NULL, 0);
- CPPUNIT_ASSERT_MESSAGE("wrong parameter", aError == rtl_Random_E_Argument);
-
- /* rtlRandomError */ aError = rtl_random_addBytes(aPool, pBuffer, nBufLen);
- CPPUNIT_ASSERT_MESSAGE("wrong parameter", aError == rtl_Random_E_None);
-
- rtl_random_destroyPool(aPool);
- delete [] pBuffer;
-
- }
-
- void addBytes_001()
- {
- rtlRandomPool aPool = rtl_random_createPool();
-
- sal_uInt32 nBufLen = 4;
- sal_uInt8 *pBuffer = new sal_uInt8[ nBufLen ];
-
- memset(pBuffer, 0, nBufLen);
-
- rtl_random_addBytes(aPool, pBuffer, nBufLen);
-
- printf("%2x %2x %2x %2x\n", pBuffer[0], pBuffer[1], pBuffer[2], pBuffer[3]);
-
- rtl_random_destroyPool(aPool);
- delete [] pBuffer;
- }
-
-
- // Change the following lines only, if you add, remove or rename
- // member functions of the current class,
- // because these macros are need by auto register mechanism.
-
- CPPUNIT_TEST_SUITE(addBytes);
- CPPUNIT_TEST(addBytes_000);
- CPPUNIT_TEST(addBytes_001);
- CPPUNIT_TEST_SUITE_END();
-}; // class addBytes
-
-
-class Statistics
-{
- int m_nDispensation[256];
-
- int m_nMin;
- int m_nMax;
- int m_nAverage;
- int m_nMinDeviation;
- int m_nMaxDeviation;
-
-public:
- void clearDispensation()
- {
- for (int i = 0;i < 256;++i) // clear array
- {
- m_nDispensation[i] = 0;
- }
- }
- Statistics()
- : m_nMin(0)
- , m_nMax(0)
- , m_nAverage(0)
- , m_nMinDeviation(0)
- , m_nMaxDeviation(0)
- {
- clearDispensation();
- }
- ~Statistics(){}
-
- void addValue(sal_Int16 _nIndex, sal_Int32 _nValue)
- {
- OSL_ASSERT(_nIndex >= 0 && _nIndex < 256);
- m_nDispensation[_nIndex] += _nValue;
- }
-
- void build(sal_Int32 _nCountMax)
- {
- m_nMin = _nCountMax;
- m_nMax = 0;
-
- m_nAverage = _nCountMax / 256;
-
- m_nMinDeviation = _nCountMax;
- m_nMaxDeviation = 0;
-
- for (int i = 0;i < 256;++i) // show dispensation
- {
- m_nMin = std::min(m_nMin, m_nDispensation[i]);
- m_nMax = std::max(m_nMax, m_nDispensation[i]);
-
- m_nMinDeviation = std::min(m_nMinDeviation, abs(m_nAverage - m_nDispensation[i]));
- m_nMaxDeviation = std::max(m_nMaxDeviation, abs(m_nAverage - m_nDispensation[i]));
- }
- }
-
- void print()
- {
- // LLA: these are only info values
- printf("\nSome statistics\n");
- printf("Min: %d\n", m_nMin);
- printf("Max: %d\n", m_nMax);
- printf("Average: %d\n", m_nAverage);
- printf("Min abs deviation: %d\n", m_nMinDeviation);
- printf("Max abs deviation: %d\n", m_nMaxDeviation);
- }
-
- sal_Int32 getAverage() const {return m_nAverage;}
- sal_Int32 getMaxDeviation() const {return m_nMaxDeviation;}
-
-};
-
-class getBytes : public CppUnit::TestFixture
-{
-public:
- // initialise your test code values here.
- void setUp()
- {
- }
-
- void tearDown()
- {
- }
-
- // insert your test code here.
- void getBytes_000()
- {
- rtlRandomPool aPool = rtl_random_createPool();
-
- sal_uInt32 nBufLen = 4;
- sal_uInt8 *pBuffer = new sal_uInt8[ nBufLen ];
- memset(pBuffer, 0, nBufLen);
-
- rtlRandomError aError = rtl_random_getBytes(NULL, NULL, 0);
- CPPUNIT_ASSERT_MESSAGE("wrong parameter", aError == rtl_Random_E_Argument);
-
- /* rtlRandomError */ aError = rtl_random_getBytes(aPool, NULL, 0);
- CPPUNIT_ASSERT_MESSAGE("wrong parameter", aError == rtl_Random_E_Argument);
-
- /* rtlRandomError */ aError = rtl_random_getBytes(aPool, pBuffer, nBufLen);
- CPPUNIT_ASSERT_MESSAGE("wrong parameter", aError == rtl_Random_E_None);
-
- rtl_random_destroyPool(aPool);
- delete [] pBuffer;
- }
-
- void getBytes_001()
- {
- rtlRandomPool aPool = rtl_random_createPool();
-
- sal_uInt32 nBufLen = 4;
- sal_uInt8 *pBuffer = new sal_uInt8[ nBufLen ];
- memset(pBuffer, 0, nBufLen);
-
- rtlRandomError aError = rtl_random_getBytes(aPool, pBuffer, nBufLen);
- CPPUNIT_ASSERT_MESSAGE("wrong parameter", aError == rtl_Random_E_None);
-
- printf("%2x %2x %2x %2x\n", pBuffer[0], pBuffer[1], pBuffer[2], pBuffer[3]);
-
- rtl_random_destroyPool(aPool);
- delete [] pBuffer;
- }
-
- void getBytes_002()
- {
- rtlRandomPool aPool = rtl_random_createPool();
-
- sal_uInt32 nBufLen = 4;
- sal_uInt8 *pBuffer = new sal_uInt8[ nBufLen << 1 ];
- memset(pBuffer, 0, nBufLen << 1);
-
- CPPUNIT_ASSERT_MESSAGE("memset failed", pBuffer[4] == 0 && pBuffer[5] == 0 && pBuffer[6] == 0 && pBuffer[7] == 0);
-
- rtlRandomError aError = rtl_random_getBytes(aPool, pBuffer, nBufLen);
- CPPUNIT_ASSERT_MESSAGE("wrong parameter", aError == rtl_Random_E_None);
-
- printf("%2x %2x %2x %2x %2x %2x %2x %2x\n", pBuffer[0], pBuffer[1], pBuffer[2], pBuffer[3], pBuffer[4], pBuffer[5], pBuffer[6], pBuffer[7]);
-
- CPPUNIT_ASSERT_MESSAGE("internal memory overwrite", pBuffer[4] == 0 && pBuffer[5] == 0 && pBuffer[6] == 0 && pBuffer[7] == 0);
-
- rtl_random_destroyPool(aPool);
- delete [] pBuffer;
- }
-
- void getBytes_003()
- {
- rtlRandomPool aPool = rtl_random_createPool();
-
- sal_uInt32 nBufLen = 1;
- sal_uInt8 *pBuffer = new sal_uInt8[ nBufLen ];
- memset(pBuffer, 0, nBufLen);
-
- Statistics aStat;
-
- CPPUNIT_ASSERT_MESSAGE("memset failed", pBuffer[0] == 0);
-
- int nCount = 0;
-
- int nCountMax = 1000000;
- for(nCount = 0;nCount < nCountMax; ++nCount) // run 100000000 through getBytes(...)
- {
- /* rtlRandomError aError = */ rtl_random_getBytes(aPool, pBuffer, nBufLen);
- /* CPPUNIT_ASSERT_MESSAGE("wrong parameter", aError == rtl_Random_E_None); */
-
- aStat.addValue(pBuffer[0], 1);
- }
-
- aStat.build(nCountMax);
- aStat.print();
-
- CPPUNIT_ASSERT_MESSAGE("deviation should be less average", aStat.getMaxDeviation() < aStat.getAverage());
-
- rtl_random_destroyPool(aPool);
- delete [] pBuffer;
- }
-
- void getBytes_003_1()
- {
- rtlRandomPool aPool = rtl_random_createPool();
-
- sal_uInt32 nBufLen = 256;
- sal_uInt8 *pBuffer = new sal_uInt8[ nBufLen ];
- memset(pBuffer, 0, nBufLen);
-
- Statistics aStat;
-
- CPPUNIT_ASSERT_MESSAGE("memset failed", pBuffer[0] == 0);
-
- int nCount = 0;
-
- int nCountMax = 10000;
- for(nCount = 0;nCount < nCountMax; ++nCount) // run 100000000 through getBytes(...)
- {
- /* rtlRandomError aError = */ rtl_random_getBytes(aPool, pBuffer, nBufLen);
- // CPPUNIT_ASSERT_MESSAGE("wrong parameter", aError == rtl_Random_E_None);
-
- for (sal_uInt32 i=0;i<nBufLen;++i)
- aStat.addValue(pBuffer[i], 1);
- }
-
- aStat.build(nCountMax * nBufLen);
- aStat.print();
-
- CPPUNIT_ASSERT_MESSAGE("deviation should be less average", aStat.getMaxDeviation() < aStat.getAverage());
-
- rtl_random_destroyPool(aPool);
- delete [] pBuffer;
- }
-
- // Change the following lines only, if you add, remove or rename
- // member functions of the current class,
- // because these macros are need by auto register mechanism.
-
- CPPUNIT_TEST_SUITE(getBytes);
- CPPUNIT_TEST(getBytes_000);
- CPPUNIT_TEST(getBytes_001);
- CPPUNIT_TEST(getBytes_002);
- CPPUNIT_TEST(getBytes_003);
- CPPUNIT_TEST(getBytes_003_1);
- CPPUNIT_TEST_SUITE_END();
-}; // class getBytes
-
-// -----------------------------------------------------------------------------
-CPPUNIT_TEST_SUITE_REGISTRATION(rtl_random::createPool);
-CPPUNIT_TEST_SUITE_REGISTRATION(rtl_random::destroyPool);
-CPPUNIT_TEST_SUITE_REGISTRATION(rtl_random::addBytes);
-CPPUNIT_TEST_SUITE_REGISTRATION(rtl_random::getBytes);
-} // namespace rtl_random
-
-CPPUNIT_PLUGIN_IMPLEMENT();
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */