1 /************************************************************************* 2 * 3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 4 * 5 * Copyright 2000, 2011 Oracle and/or its affiliates. 6 * 7 * OpenOffice.org - a multi-platform office productivity suite 8 * 9 * This file is part of OpenOffice.org. 10 * 11 * OpenOffice.org is free software: you can redistribute it and/or modify 12 * it under the terms of the GNU Lesser General Public License version 3 13 * only, as published by the Free Software Foundation. 14 * 15 * OpenOffice.org is distributed in the hope that it will be useful, 16 * but WITHOUT ANY WARRANTY; without even the implied warranty of 17 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 18 * GNU Lesser General Public License version 3 for more details 19 * (a copy is included in the LICENSE file that accompanied this code). 20 * 21 * You should have received a copy of the GNU Lesser General Public License 22 * version 3 along with OpenOffice.org. If not, see 23 * <http://www.openoffice.org/license.html> 24 * for a copy of the LGPLv3 License. 25 * 26 ************************************************************************/ 27 28 #include "sal/config.h" 29 30 #include "cppunit/TestAssert.h" 31 #include "cppunit/TestFixture.h" 32 #include "cppunit/extensions/HelperMacros.h" 33 #include "cppunit/plugin/TestPlugIn.h" 34 35 #include "../source/cache.hxx" 36 37 namespace { 38 39 class Test: public CppUnit::TestFixture { 40 private: 41 CPPUNIT_TEST_SUITE(Test); 42 CPPUNIT_TEST(testNothingLostFromLruList); 43 CPPUNIT_TEST_SUITE_END(); 44 45 void testNothingLostFromLruList(); 46 }; 47 48 // cf. jurt/test/com/sun/star/lib/uno/protocols/urp/Cache_Test.java: 49 void Test::testNothingLostFromLruList() { 50 int a[8]; 51 for (int i = 0; i != sizeof a / sizeof a[0]; ++i) { 52 for (int j = 0; j != i; ++j) { 53 a[j] = 0; 54 } 55 for (;;) { 56 binaryurp::Cache< int > c(4); 57 for (int k = 0; k != i; ++k) { 58 bool f; 59 c.add(a[k], &f); 60 } 61 bool f; 62 CPPUNIT_ASSERT_EQUAL( 63 6, 64 c.add(-1, &f) + c.add(-2, &f) + c.add(-3, &f) + c.add(-4, &f)); 65 int j = i - 1; 66 while (j >= 0 && a[j] == 3) { 67 --j; 68 } 69 if (j < 0) { 70 break; 71 } 72 ++a[j]; 73 for (int k = j + 1; k != i; ++k) { 74 a[k] = 0; 75 } 76 } 77 } 78 } 79 80 CPPUNIT_TEST_SUITE_REGISTRATION(Test); 81 82 } 83 84 CPPUNIT_PLUGIN_IMPLEMENT(); 85