1*b1cdbd2cSJim Jagielski /************************************************************** 2*b1cdbd2cSJim Jagielski * 3*b1cdbd2cSJim Jagielski * Licensed to the Apache Software Foundation (ASF) under one 4*b1cdbd2cSJim Jagielski * or more contributor license agreements. See the NOTICE file 5*b1cdbd2cSJim Jagielski * distributed with this work for additional information 6*b1cdbd2cSJim Jagielski * regarding copyright ownership. The ASF licenses this file 7*b1cdbd2cSJim Jagielski * to you under the Apache License, Version 2.0 (the 8*b1cdbd2cSJim Jagielski * "License"); you may not use this file except in compliance 9*b1cdbd2cSJim Jagielski * with the License. You may obtain a copy of the License at 10*b1cdbd2cSJim Jagielski * 11*b1cdbd2cSJim Jagielski * http://www.apache.org/licenses/LICENSE-2.0 12*b1cdbd2cSJim Jagielski * 13*b1cdbd2cSJim Jagielski * Unless required by applicable law or agreed to in writing, 14*b1cdbd2cSJim Jagielski * software distributed under the License is distributed on an 15*b1cdbd2cSJim Jagielski * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 16*b1cdbd2cSJim Jagielski * KIND, either express or implied. See the License for the 17*b1cdbd2cSJim Jagielski * specific language governing permissions and limitations 18*b1cdbd2cSJim Jagielski * under the License. 19*b1cdbd2cSJim Jagielski * 20*b1cdbd2cSJim Jagielski *************************************************************/ 21*b1cdbd2cSJim Jagielski 22*b1cdbd2cSJim Jagielski 23*b1cdbd2cSJim Jagielski 24*b1cdbd2cSJim Jagielski 25*b1cdbd2cSJim Jagielski // MARKER(update_precomp.py): autogen include statement, do not remove 26*b1cdbd2cSJim Jagielski #include "precompiled_sal.hxx" 27*b1cdbd2cSJim Jagielski // autogenerated file with codegen.pl 28*b1cdbd2cSJim Jagielski 29*b1cdbd2cSJim Jagielski #include <rtl/alloc.h> 30*b1cdbd2cSJim Jagielski #include <testshl/simpleheader.hxx> 31*b1cdbd2cSJim Jagielski 32*b1cdbd2cSJim Jagielski namespace rtl_alloc 33*b1cdbd2cSJim Jagielski { 34*b1cdbd2cSJim Jagielski 35*b1cdbd2cSJim Jagielski // small memory check routine, which return false, if there is a problem 36*b1cdbd2cSJim Jagielski checkMemory(char * _pMemory,sal_uInt32 _nSize,char _n)37*b1cdbd2cSJim Jagielski bool checkMemory(char* _pMemory, sal_uInt32 _nSize, char _n) 38*b1cdbd2cSJim Jagielski { 39*b1cdbd2cSJim Jagielski bool bOk = true; 40*b1cdbd2cSJim Jagielski 41*b1cdbd2cSJim Jagielski for (sal_uInt32 i=0;i<_nSize;i++) 42*b1cdbd2cSJim Jagielski { 43*b1cdbd2cSJim Jagielski if (_pMemory[i] != _n) 44*b1cdbd2cSJim Jagielski { 45*b1cdbd2cSJim Jagielski bOk = false; 46*b1cdbd2cSJim Jagielski } 47*b1cdbd2cSJim Jagielski } 48*b1cdbd2cSJim Jagielski return bOk; 49*b1cdbd2cSJim Jagielski } 50*b1cdbd2cSJim Jagielski 51*b1cdbd2cSJim Jagielski class Memory : public CppUnit::TestFixture 52*b1cdbd2cSJim Jagielski { 53*b1cdbd2cSJim Jagielski // for normal alloc functions 54*b1cdbd2cSJim Jagielski char *m_pMemory; 55*b1cdbd2cSJim Jagielski sal_uInt32 m_nSizeOfMemory; 56*b1cdbd2cSJim Jagielski 57*b1cdbd2cSJim Jagielski public: Memory()58*b1cdbd2cSJim Jagielski Memory() 59*b1cdbd2cSJim Jagielski :m_pMemory(NULL), 60*b1cdbd2cSJim Jagielski m_nSizeOfMemory(50 * 1024 * 1024) 61*b1cdbd2cSJim Jagielski { 62*b1cdbd2cSJim Jagielski } 63*b1cdbd2cSJim Jagielski 64*b1cdbd2cSJim Jagielski // initialise your test code values here. setUp()65*b1cdbd2cSJim Jagielski void setUp() 66*b1cdbd2cSJim Jagielski { 67*b1cdbd2cSJim Jagielski t_print("allocate memory\n"); 68*b1cdbd2cSJim Jagielski m_pMemory = (char*) rtl_allocateMemory( m_nSizeOfMemory ); 69*b1cdbd2cSJim Jagielski } 70*b1cdbd2cSJim Jagielski tearDown()71*b1cdbd2cSJim Jagielski void tearDown() 72*b1cdbd2cSJim Jagielski { 73*b1cdbd2cSJim Jagielski t_print("free memory\n"); 74*b1cdbd2cSJim Jagielski rtl_freeMemory(m_pMemory); 75*b1cdbd2cSJim Jagielski m_pMemory = NULL; 76*b1cdbd2cSJim Jagielski } 77*b1cdbd2cSJim Jagielski 78*b1cdbd2cSJim Jagielski // insert your test code here. rtl_allocateMemory_001()79*b1cdbd2cSJim Jagielski void rtl_allocateMemory_001() 80*b1cdbd2cSJim Jagielski { 81*b1cdbd2cSJim Jagielski // this is demonstration code 82*b1cdbd2cSJim Jagielski // CPPUNIT_ASSERT_MESSAGE("a message", 1 == 1); 83*b1cdbd2cSJim Jagielski 84*b1cdbd2cSJim Jagielski CPPUNIT_ASSERT_MESSAGE( "Can get zero memory.", m_pMemory != NULL); 85*b1cdbd2cSJim Jagielski memset(m_pMemory, 1, m_nSizeOfMemory); 86*b1cdbd2cSJim Jagielski CPPUNIT_ASSERT_MESSAGE( "memory contains wrong value.", checkMemory(m_pMemory, m_nSizeOfMemory, 1) == true); 87*b1cdbd2cSJim Jagielski } 88*b1cdbd2cSJim Jagielski rtl_reallocateMemory_001()89*b1cdbd2cSJim Jagielski void rtl_reallocateMemory_001() 90*b1cdbd2cSJim Jagielski { 91*b1cdbd2cSJim Jagielski t_print("reallocate memory\n"); 92*b1cdbd2cSJim Jagielski sal_uInt32 nSize = 10 * 1024 * 1024; 93*b1cdbd2cSJim Jagielski m_pMemory = (char*)rtl_reallocateMemory(m_pMemory, nSize); 94*b1cdbd2cSJim Jagielski 95*b1cdbd2cSJim Jagielski CPPUNIT_ASSERT_MESSAGE( "Can reallocate memory.", m_pMemory != NULL); 96*b1cdbd2cSJim Jagielski memset(m_pMemory, 2, nSize); 97*b1cdbd2cSJim Jagielski CPPUNIT_ASSERT_MESSAGE( "memory contains wrong value.", checkMemory(m_pMemory, nSize, 2) == true); 98*b1cdbd2cSJim Jagielski } 99*b1cdbd2cSJim Jagielski 100*b1cdbd2cSJim Jagielski // void rtl_freeMemory_001() 101*b1cdbd2cSJim Jagielski // { 102*b1cdbd2cSJim Jagielski // // CPPUNIT_ASSERT_STUB(); 103*b1cdbd2cSJim Jagielski // } 104*b1cdbd2cSJim Jagielski 105*b1cdbd2cSJim Jagielski // Change the following lines only, if you add, remove or rename 106*b1cdbd2cSJim Jagielski // member functions of the current class, 107*b1cdbd2cSJim Jagielski // because these macros are need by auto register mechanism. 108*b1cdbd2cSJim Jagielski 109*b1cdbd2cSJim Jagielski CPPUNIT_TEST_SUITE(Memory); 110*b1cdbd2cSJim Jagielski CPPUNIT_TEST(rtl_allocateMemory_001); 111*b1cdbd2cSJim Jagielski CPPUNIT_TEST(rtl_reallocateMemory_001); 112*b1cdbd2cSJim Jagielski // CPPUNIT_TEST(rtl_freeMemory_001); 113*b1cdbd2cSJim Jagielski CPPUNIT_TEST_SUITE_END(); 114*b1cdbd2cSJim Jagielski }; // class test 115*b1cdbd2cSJim Jagielski 116*b1cdbd2cSJim Jagielski class ZeroMemory : public CppUnit::TestFixture 117*b1cdbd2cSJim Jagielski { 118*b1cdbd2cSJim Jagielski // for zero functions 119*b1cdbd2cSJim Jagielski char *m_pZeroMemory; 120*b1cdbd2cSJim Jagielski sal_uInt32 m_nSizeOfZeroMemory; 121*b1cdbd2cSJim Jagielski 122*b1cdbd2cSJim Jagielski public: ZeroMemory()123*b1cdbd2cSJim Jagielski ZeroMemory() 124*b1cdbd2cSJim Jagielski :m_pZeroMemory(NULL), 125*b1cdbd2cSJim Jagielski m_nSizeOfZeroMemory( 50 * 1024 * 1024 ) 126*b1cdbd2cSJim Jagielski { 127*b1cdbd2cSJim Jagielski } 128*b1cdbd2cSJim Jagielski 129*b1cdbd2cSJim Jagielski // initialise your test code values here. setUp()130*b1cdbd2cSJim Jagielski void setUp() 131*b1cdbd2cSJim Jagielski { 132*b1cdbd2cSJim Jagielski t_print("allocate zero memory\n"); 133*b1cdbd2cSJim Jagielski m_pZeroMemory = (char*) rtl_allocateZeroMemory( m_nSizeOfZeroMemory ); 134*b1cdbd2cSJim Jagielski } 135*b1cdbd2cSJim Jagielski tearDown()136*b1cdbd2cSJim Jagielski void tearDown() 137*b1cdbd2cSJim Jagielski { 138*b1cdbd2cSJim Jagielski t_print("free zero memory\n"); 139*b1cdbd2cSJim Jagielski rtl_freeZeroMemory(m_pZeroMemory, m_nSizeOfZeroMemory); 140*b1cdbd2cSJim Jagielski // LLA: no check possible, may GPF if there is something wrong. 141*b1cdbd2cSJim Jagielski // CPPUNIT_ASSERT_MESSAGE( "Can get zero memory.", pZeroMemory != NULL); 142*b1cdbd2cSJim Jagielski } 143*b1cdbd2cSJim Jagielski 144*b1cdbd2cSJim Jagielski // insert your test code here. 145*b1cdbd2cSJim Jagielski rtl_allocateZeroMemory_001()146*b1cdbd2cSJim Jagielski void rtl_allocateZeroMemory_001() 147*b1cdbd2cSJim Jagielski { 148*b1cdbd2cSJim Jagielski CPPUNIT_ASSERT_MESSAGE( "Can get zero memory.", m_pZeroMemory != NULL); 149*b1cdbd2cSJim Jagielski CPPUNIT_ASSERT_MESSAGE( "memory contains wrong value.", checkMemory(m_pZeroMemory, m_nSizeOfZeroMemory, 0) == true); 150*b1cdbd2cSJim Jagielski 151*b1cdbd2cSJim Jagielski memset(m_pZeroMemory, 3, m_nSizeOfZeroMemory); 152*b1cdbd2cSJim Jagielski CPPUNIT_ASSERT_MESSAGE( "memory contains wrong value.", checkMemory(m_pZeroMemory, m_nSizeOfZeroMemory, 3) == true); 153*b1cdbd2cSJim Jagielski } 154*b1cdbd2cSJim Jagielski 155*b1cdbd2cSJim Jagielski // Change the following lines only, if you add, remove or rename 156*b1cdbd2cSJim Jagielski // member functions of the current class, 157*b1cdbd2cSJim Jagielski // because these macros are need by auto register mechanism. 158*b1cdbd2cSJim Jagielski 159*b1cdbd2cSJim Jagielski CPPUNIT_TEST_SUITE(ZeroMemory); 160*b1cdbd2cSJim Jagielski CPPUNIT_TEST(rtl_allocateZeroMemory_001); 161*b1cdbd2cSJim Jagielski CPPUNIT_TEST_SUITE_END(); 162*b1cdbd2cSJim Jagielski }; // class test 163*b1cdbd2cSJim Jagielski 164*b1cdbd2cSJim Jagielski // ----------------------------------------------------------------------------- 165*b1cdbd2cSJim Jagielski CPPUNIT_TEST_SUITE_NAMED_REGISTRATION(rtl_alloc::Memory, "rtl_alloc"); 166*b1cdbd2cSJim Jagielski CPPUNIT_TEST_SUITE_NAMED_REGISTRATION(rtl_alloc::ZeroMemory, "rtl_alloc"); 167*b1cdbd2cSJim Jagielski } // namespace rtl_alloc 168*b1cdbd2cSJim Jagielski 169*b1cdbd2cSJim Jagielski 170*b1cdbd2cSJim Jagielski // ----------------------------------------------------------------------------- 171*b1cdbd2cSJim Jagielski 172*b1cdbd2cSJim Jagielski // this macro creates an empty function, which will called by the RegisterAllFunctions() 173*b1cdbd2cSJim Jagielski // to let the user the possibility to also register some functions by hand. 174*b1cdbd2cSJim Jagielski NOADDITIONAL; 175*b1cdbd2cSJim Jagielski 176