⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 buildertest.cpp

📁 robocup rcssbase-11.1.0(1).zip
💻 CPP
字号:
// -*-c++-*-/***************************************************************************                  buildertest.cpp  - A rcss::conf::Builder testing program                             -------------------    begin                : 10-June-2003    copyright            : (C) 2003 by The RoboCup Soccer Server                            Maintenance Group.    email                : sserver-admin@lists.sourceforge.net ***************************************************************************//*************************************************************************** *                                                                         * *   This program is free software; you can redistribute it and/or modify  * *   it under the terms of the GNU GPL as published by the Free Software   * *   Foundation; either version 2 of the License, or (at your option) any  * *   later version.                                                        * *                                                                         * ***************************************************************************/#include <cppunit/extensions/HelperMacros.h>class TestBuilder : public CPPUNIT_NS::TestFixture{    CPPUNIT_TEST_SUITE(TestBuilder);	CPPUNIT_TEST(NormalVar);	CPPUNIT_TEST(MemberVar);	CPPUNIT_TEST(MemberFunc);	CPPUNIT_TEST(ExternalFunc);    CPPUNIT_TEST_SUITE_END();protected:    //--------------------------------------------------------------------------    /// XXX: Document what the test is for here.    //--------------------------------------------------------------------------	void NormalVar();	void MemberVar();	void MemberFunc();	void ExternalFunc();	public:    TestBuilder()	{}	    ~TestBuilder()	{}};CPPUNIT_TEST_SUITE_REGISTRATION( TestBuilder );#include "rcssbase/conf/parser.hpp"#include "rcssbase/conf/builder.hpp"#include <stdio.h>using namespace rcss::conf;int GLOBAL = 5;voidsetFunc( int v ){    GLOBAL = v;}intgetFunc(){    return GLOBAL;}class test3{public:    void    operator()( int v )    { test = v; }    int    operator()() const    { return test; }    int test;};class MyBuilder    : public Builder{public:  MyBuilder()    : Builder( "buildertest", "test" ),          m_test( 5 )    {}    void    addExternalVar( int& test )    {         Builder::addParam( "test", test, "test" );     }    void    addMemVar()    {         Builder::addParam( "test", m_test, "test" );     }    void    addMemFunc()    {         Builder::addParam( "test",						   makeSetter( this, &MyBuilder::setTest ), 						   makeGetter( this, &MyBuilder::getTest ), "test" );     }    void    addExternalFunc( void(*s)(int), int(*g)() )    {         Builder::addParam( "test", makeSetter( s ), makeGetter( g ), "test" );     }    template< typename V >    void    set( const std::string& param, V value )    {        Builder::set( param, value );    }    int    getTest() const    {        return m_test;    }    void    setTest( int value )    {        m_test = value;    }    template< typename V >    bool    get( const std::string& param, V& value )    {        return Builder::get( param, value );    }        int m_test;};voidTestBuilder::NormalVar() {       int test = 5;    MyBuilder tester;    tester.addExternalVar( test );    int tmp = 0;    CPPUNIT_ASSERT( tester.get( "test", tmp ) );    CPPUNIT_ASSERT_EQUAL( test, tmp );    tester.set( "test", 10 );    CPPUNIT_ASSERT_EQUAL( 10, test );    CPPUNIT_ASSERT( tester.get( "test", tmp ) );    CPPUNIT_ASSERT_EQUAL( test, tmp );    test = 2;    CPPUNIT_ASSERT( tester.get( "test", tmp ) );    CPPUNIT_ASSERT_EQUAL( test, tmp );}voidTestBuilder::MemberVar() {       MyBuilder tester;    tester.addMemVar();    int tmp = 0;    CPPUNIT_ASSERT( tester.get( "test", tmp ) );    CPPUNIT_ASSERT_EQUAL( 5, tmp );    tester.set( "test", 10 );    CPPUNIT_ASSERT_EQUAL( 10, tester.m_test );    CPPUNIT_ASSERT( tester.get( "test", tmp ) );    CPPUNIT_ASSERT_EQUAL( 10, tmp );    tester.m_test = 2;    CPPUNIT_ASSERT( tester.get( "test", tmp ) );    CPPUNIT_ASSERT_EQUAL( 2, tmp );}voidTestBuilder::MemberFunc() {       MyBuilder tester;    tester.addMemFunc();    int tmp = 0;    CPPUNIT_ASSERT( tester.get( "test", tmp ) );    CPPUNIT_ASSERT_EQUAL( 5, tmp );    tester.set( "test", 10 );    CPPUNIT_ASSERT_EQUAL( 10, tester.m_test );    CPPUNIT_ASSERT( tester.get( "test", tmp ) );    CPPUNIT_ASSERT_EQUAL( 10, tmp );    tester.m_test = 2;    CPPUNIT_ASSERT( tester.get( "test", tmp ) );    CPPUNIT_ASSERT_EQUAL( 2, tmp );}voidTestBuilder::ExternalFunc() {       MyBuilder tester;    tester.addExternalFunc( &setFunc, &getFunc );    int tmp = 0;    CPPUNIT_ASSERT( tester.get( "test", tmp ) );    CPPUNIT_ASSERT_EQUAL( 5, tmp );    tester.set( "test", 10 );    CPPUNIT_ASSERT_EQUAL( 10, GLOBAL );    CPPUNIT_ASSERT( tester.get( "test", tmp ) );    CPPUNIT_ASSERT_EQUAL( 10, tmp );    GLOBAL = 2;    CPPUNIT_ASSERT( tester.get( "test", tmp ) );    CPPUNIT_ASSERT_EQUAL( 2, tmp );}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -