From: bols Date: Thu, 11 Aug 2011 12:36:50 +0000 (+0900) Subject: commit test files X-Git-Url: http://git.osdn.net/view?a=commitdiff_plain;h=2c3d22813cc0f80e1565aa9f644e214a8a4b0ae0;p=oca1%2Ftest.git commit test files test runner テストが実行できるようになった --- diff --git a/USB_Keybord_MAX3421E/src/Makefile b/USB_Keybord_MAX3421E/src/Makefile index 9ae9207..4852da3 100644 --- a/USB_Keybord_MAX3421E/src/Makefile +++ b/USB_Keybord_MAX3421E/src/Makefile @@ -1,14 +1,27 @@ SRCS=\ SPI_controler.nsl +CPP_SRCS=\ +SPI_controler.cpp\ +SPI_controler_test_case.cpp\ +SPI_controler_top.cpp +LDFLAGS= -L/home/bols/systemc-2.2.0/lib-linux +LDLIBS= -lcppunit -lsystemc +CXXFLAGS= -I/home/bols/systemc-2.2.0/include +INC= -I/home/bols/systemc-2.2.0/include SC_SRCS=$(patsubst %.nsl,%.sc,$(filter %.nsl,$(SRCS))) +OBJCS=$(patsubst %.cpp,%.o,$(filter %.cpp,$(CPP_SRCS))) .SUFFIXES: .o .sc .nsl -all:create_sc +all:create_sc runtest echo $(SC_SRCS) create_sc:$(SC_SRCS) +TestMain:$(OBJCS) TestMain.cpp + .nsl.sc: nsl2sc $< + +SPI_controler_top.o: diff --git a/USB_Keybord_MAX3421E/src/SPI_controler.cpp b/USB_Keybord_MAX3421E/src/SPI_controler.cpp new file mode 100644 index 0000000..2c41589 --- /dev/null +++ b/USB_Keybord_MAX3421E/src/SPI_controler.cpp @@ -0,0 +1,46 @@ +/* + Produced by NSL Core(version=20110614), IP ARCH, Inc. Wed Aug 10 21:05:17 2011 + Licensed to :LIMITED EVALUATION USER: +*/ +/* + EVALUATION COPY! DO NOT USE ANY PART OF THIS FILE FOR COMMERCIAL PRODUCTS. +*/ +#include +template int _nsl_readmem(T array[], const char *file, int start, int end, int sft) ; + +SC_MODULE( spi_controler ) { +sc_in p_reset, m_clock; + sc_in > send_data; +sc_out > resv_data; +sc_in send; +sc_in read_MOSI; +sc_in write_MOSO; + sc_signal > output_data; + sc_signal > input_data; + sc_signal > work_flg; + +void _sc_method_output_data() { + +} +void _sc_method_input_data() { + +} +void _sc_method_work_flg() { + +} + SC_CTOR( spi_controler ) + : + output_data("output_data"), + input_data("input_data"), + work_flg("work_flg"), + send_data("send_data"), + resv_data("resv_data"), + p_reset("p_reset"), + m_clock("m_clock") + { +}; +}; +/* + Produced by NSL Core(version=20110614), IP ARCH, Inc. Wed Aug 10 21:05:17 2011 + Licensed to :LIMITED EVALUATION USER: +*/ diff --git a/USB_Keybord_MAX3421E/src/SPI_controler.h b/USB_Keybord_MAX3421E/src/SPI_controler.h new file mode 100644 index 0000000..e2f2b06 --- /dev/null +++ b/USB_Keybord_MAX3421E/src/SPI_controler.h @@ -0,0 +1,43 @@ +/* + Produced by NSL Core(version=20110614), IP ARCH, Inc. Wed Aug 10 21:05:17 2011 + Licensed to :LIMITED EVALUATION USER: +*/ +/* + EVALUATION COPY! DO NOT USE ANY PART OF THIS FILE FOR COMMERCIAL PRODUCTS. +*/ +#include +template int _nsl_readmem(T array[], const char *file, int start, int end, int sft) ; + +SC_MODULE( spi_controler ) { +sc_in p_reset, m_clock; + sc_in > send_data; +sc_out > resv_data; +sc_in send; +sc_in read_MOSI; +sc_in write_MOSO; + sc_signal > output_data; + sc_signal > input_data; + sc_signal > work_flg; + +void _sc_method_output_data() ; + +void _sc_method_input_data() ; + +void _sc_method_work_flg() ; + + SC_CTOR( spi_controler ) + : + output_data("output_data"), + input_data("input_data"), + work_flg("work_flg"), + send_data("send_data"), + resv_data("resv_data"), + p_reset("p_reset"), + m_clock("m_clock") + { +}; +}; +/* + Produced by NSL Core(version=20110614), IP ARCH, Inc. Wed Aug 10 21:05:17 2011 + Licensed to :LIMITED EVALUATION USER: +*/ diff --git a/USB_Keybord_MAX3421E/src/SPI_controler_tb.sc b/USB_Keybord_MAX3421E/src/SPI_controler_tb.sc index 93c67c1..3323749 100644 --- a/USB_Keybord_MAX3421E/src/SPI_controler_tb.sc +++ b/USB_Keybord_MAX3421E/src/SPI_controler_tb.sc @@ -1,59 +1,116 @@ -/* - Produced by NSL Core(version=20101103), IP ARCH, Inc. Wed Aug 10 18:37:57 2011 - Licensed to :LIMITED EVALUATION USER: -*/ -#include -#include "spi_controler.sc" -#include -sc_clock m_clock("m_clock",10,0.5,0,false); -sc_signal p_reset; -sc_signal > send_data; -sc_signal > resv_data; -sc_signal > send; -sc_signal > read_MOSI; -sc_signal > write_MOSO; - -spi_controler spi_controler("spi_controler"); - -static int ctrl_clock=0; -SC_MODULE (c_clock) { - sc_in m_clock; - void do_reset() { - ctrl_clock++; - if(ctrl_clock==0) p_reset=1; - if(ctrl_clock==1) p_reset=0 - } - SC_CTOR(c_clock) { - SC_METHOD(do_reset); - sensitive << m_clock.pos(); - } -}; - -int sc_main(int argc, char *argv[]) -{ - int stop; - if(argc>1 && (stop=atoi(argv[1])<=0)) stop=1000; - sc_trace_file *tf = sc_create_vcd_trace_file("spi_controler"); - sc_trace(tf,spi_controler.p_reset,"spi_controler.p_reset"); - sc_trace(tf,spi_controler.m_clock,"spi_controler.m_clock"); - sc_trace(tf,spi_controler.send_data,"spi_controler.send_data"); - sc_trace(tf,spi_controler.resv_data,"spi_controler.resv_data"); - sc_trace(tf,spi_controler.send,"spi_controler.send"); - sc_trace(tf,spi_controler.read_MOSI,"spi_controler.read_MOSI"); - sc_trace(tf,spi_controler.write_MOSO,"spi_controler.write_MOSO"); - c_clock cclk("cclk"); - cclk.m_clock(m_clock); - spi_controler.p_reset(p_reset); - spi_controler.m_clock(m_clock); - spi_controler.send_data(send_data); - spi_controler.resv_data(resv_data); - spi_controler.send(send); - spi_controler.read_MOSI(read_MOSI); - spi_controler.write_MOSO(write_MOSO); - sc_start(stop, SC_NS); - sc_close_vcd_trace_file(tf) -} -/* - Produced by NSL Core(version=20101103), IP ARCH, Inc. Wed Aug 10 18:37:57 2011 - Licensed to :LIMITED EVALUATION USER: -*/ +/* + Produced by NSL Core(version=20110614), IP ARCH, Inc. Wed Aug 10 21:04:09 2011 + Licensed to :LIMITED EVALUATION USER: +*/ +/* + EVALUATION COPY! DO NOT USE ANY PART OF THIS FILE FOR COMMERCIAL PRODUCTS. +*/ +#include +#include "SPI_controler.sc" +#include +#include +template int _nsl_readmem(T array[], const char *file, int start, int end, int sft) ; +sc_clock m_clock("m_clock",10, SC_NS, 0.5,0, SC_NS, false); +sc_signal p_reset; +sc_signal > send_data; +sc_signal > resv_data; +sc_signal > send; +sc_signal > read_MOSI; +sc_signal > write_MOSO; + +spi_controler spi_controler("spi_controler"); + +static int ctrl_clock=0; +SC_MODULE (c_clock) { + sc_in m_clock; + void do_reset() { + ctrl_clock++; + if(ctrl_clock<2) p_reset=1; + else p_reset=0; + } + SC_CTOR(c_clock) { + SC_METHOD(do_reset); + sensitive << m_clock.pos(); + } +}; + +int sc_main(int argc, char *argv[]) +{ + int stop; + if(argc<2 || (stop=atoi(argv[1]))<=0) stop=1000000; + sc_trace_file *tf = sc_create_vcd_trace_file("spi_controler"); + tf->set_time_unit(1, SC_NS); + sc_trace(tf,spi_controler.send_data,"spi_controler.send_data"); + sc_trace(tf,spi_controler.resv_data,"spi_controler.resv_data"); + sc_trace(tf,spi_controler.send,"spi_controler.send"); + sc_trace(tf,spi_controler.read_MOSI,"spi_controler.read_MOSI"); + sc_trace(tf,spi_controler.write_MOSO,"spi_controler.write_MOSO"); + sc_trace(tf,spi_controler.p_reset,"spi_controler.p_reset"); + sc_trace(tf,spi_controler.m_clock,"spi_controler.m_clock"); + sc_trace(tf,spi_controler.output_data,"spi_controler.output_data"); + sc_trace(tf,spi_controler.input_data,"spi_controler.input_data"); + sc_trace(tf,spi_controler.work_flg,"spi_controler.work_flg"); + c_clock cclk("cclk"); + cclk.m_clock(m_clock); + spi_controler.p_reset(p_reset); + spi_controler.m_clock(m_clock); + spi_controler.send_data(send_data); + spi_controler.resv_data(resv_data); + spi_controler.send(send); + spi_controler.read_MOSI(read_MOSI); + spi_controler.write_MOSO(write_MOSO); + sc_start(stop, SC_NS); + sc_close_vcd_trace_file(tf); +} + +template int _nsl_readmem(T array[], const char *file, int start, int end, int sft) { + FILE *txt; + uint64_t addr,data; + int i,bit,c,lastch,incomm; + if((txt=fopen(file,"r"))==NULL) { + return(1); + } + addr = start; + data = 0; + lastch=0; + incomm=0; + while((c=fgetc(txt))!=EOF) { + unsigned int ch; + if(incomm) { + if(c=='\n') incomm=0; + continue; + } + if(c=='#') {incomm++; continue;} + if(c=='_' || c=='\r' ) continue; + if(!lastch && (c==' ' || c=='\t' || c=='\n') ) continue; + lastch=c; + ch = c - 97; + if(sft==4 && ch<6) { + data=(data << sft); + data = (data + ch + 10); + } + else if(sft==4 && ch+32 < 6) { + data=(data << sft); + data = (data + ch + 32 + 10); + } + else if(sft==4 && ch+49 < 10) { + data=(data << sft); + data = (data + ch + 49); + } + else if(sft==1 && ch+49 < 2) { + data=(data << sft); + data = (data + ch + 49); + } + else { + array[addr] = data; + addr++; + if(addr>=end) break; + lastch=0; + data=0; + continue; + } + } + fclose(txt); + return 0; +} +void _nsl_hook(char *file, int line, int attrib, const char *name) {} diff --git a/USB_Keybord_MAX3421E/src/SPI_controler_test_case.cpp b/USB_Keybord_MAX3421E/src/SPI_controler_test_case.cpp new file mode 100644 index 0000000..ee47381 --- /dev/null +++ b/USB_Keybord_MAX3421E/src/SPI_controler_test_case.cpp @@ -0,0 +1,53 @@ +#include // +#include "SPI_controler_top.h" + +// 以下はSPIControlerTestクラスの宣言----- +class SPIControlerTest : public CPPUNIT_NS::TestFixture { // + CPPUNIT_TEST_SUITE( SPIControlerTest ); // + CPPUNIT_TEST( test_init ); // + CPPUNIT_TEST( test_incr ); // + CPPUNIT_TEST( test_clear ); // + CPPUNIT_TEST_SUITE_END(); // + +protected: + SPIControlerTop* c_; + +public: + void setUp(); // + void tearDown(); // + +protected: + void test_init(); // + void test_incr(); // + void test_clear(); // +}; + +// 以下はSPIControlerTestクラスの実装----- + +CPPUNIT_TEST_SUITE_REGISTRATION( SPIControlerTest ); // + +// 各テスト・ケースの実行直前に呼ばれる +void SPIControlerTest::setUp() { + c_ = new SPIControlerTop(); +} + +// 各テスト・ケースの実行直後に呼ばれる +void SPIControlerTest::tearDown() { + delete c_; +} + +// これ以降はテスト・ケースの実装内容 + +void SPIControlerTest::test_init() { + CPPUNIT_ASSERT_EQUAL(0,(int) c_->read_MOSI()); // +} + +void SPIControlerTest::test_incr() { + for ( int i = 1; i < 10; ++i ) { + CPPUNIT_ASSERT_EQUAL(i,(int) c_->read_MOSI()); // + } +} + +void SPIControlerTest::test_clear() { + CPPUNIT_ASSERT_EQUAL(0,(int) c_->read_MOSI()); // +} diff --git a/USB_Keybord_MAX3421E/src/SPI_controler_top.cpp b/USB_Keybord_MAX3421E/src/SPI_controler_top.cpp new file mode 100644 index 0000000..3dcc022 --- /dev/null +++ b/USB_Keybord_MAX3421E/src/SPI_controler_top.cpp @@ -0,0 +1,137 @@ +/* + Produced by NSL Core(version=20110614), IP ARCH, Inc. Wed Aug 10 21:04:09 2011 + Licensed to :LIMITED EVALUATION USER: +*/ +/* + EVALUATION COPY! DO NOT USE ANY PART OF THIS FILE FOR COMMERCIAL PRODUCTS. +*/ +#include "SPI_controler.h" +#include +#include +#include +template int _nsl_readmem(T array[], const char *file, int start, int end, int sft) ; +sc_clock m_clock("m_clock",10, SC_NS, 0.5,0, SC_NS, false); +sc_signal p_reset; +sc_signal > send_data; +sc_signal > resv_data; + +spi_controler spi_controler("spi_controler"); + +static int ctrl_clock=0; +SC_MODULE (c_clock) { + sc_in m_clock; + void do_reset() { + ctrl_clock++; + if(ctrl_clock<2) p_reset=1; + else p_reset=0; + } + SC_CTOR(c_clock) { + SC_METHOD(do_reset); + sensitive << m_clock.pos(); + } +}; + +template int _nsl_readmem(T array[], const char *file, int start, int end, int sft) { + FILE *txt; + uint64_t addr,data; + int i,bit,c,lastch,incomm; + if((txt=fopen(file,"r"))==NULL) { + return(1); + } + addr = start; + data = 0; + lastch=0; + incomm=0; + while((c=fgetc(txt))!=EOF) { + unsigned int ch; + if(incomm) { + if(c=='\n') incomm=0; + continue; + } + if(c=='#') {incomm++; continue;} + if(c=='_' || c=='\r' ) continue; + if(!lastch && (c==' ' || c=='\t' || c=='\n') ) continue; + lastch=c; + ch = c - 97; + if(sft==4 && ch<6) { + data=(data << sft); + data = (data + ch + 10); + } + else if(sft==4 && ch+32 < 6) { + data=(data << sft); + data = (data + ch + 32 + 10); + } + else if(sft==4 && ch+49 < 10) { + data=(data << sft); + data = (data + ch + 49); + } + else if(sft==1 && ch+49 < 2) { + data=(data << sft); + data = (data + ch + 49); + } + else { + array[addr] = data; + addr++; + if(addr>=end) break; + lastch=0; + data=0; + continue; + } + } + fclose(txt); + return 0; +} +void _nsl_hook(char *file, int line, int attrib, const char *name) {} + +#include "SPI_controler_top.h" +SPIControlerTop::SPIControlerTop() +{ +sc_signal send; +sc_signal read_MOSI; +sc_signal write_MOSO; + int stop; + tf = sc_create_vcd_trace_file("spi_controler"); + tf->set_time_unit(1, SC_NS); + sc_trace(tf,spi_controler.send_data,"spi_controler.send_data"); + sc_trace(tf,spi_controler.resv_data,"spi_controler.resv_data"); + sc_trace(tf,spi_controler.send,"spi_controler.send"); + sc_trace(tf,spi_controler.read_MOSI,"spi_controler.read_MOSI"); + sc_trace(tf,spi_controler.write_MOSO,"spi_controler.write_MOSO"); + sc_trace(tf,spi_controler.p_reset,"spi_controler.p_reset"); + sc_trace(tf,spi_controler.m_clock,"spi_controler.m_clock"); + sc_trace(tf,spi_controler.output_data,"spi_controler.output_data"); + sc_trace(tf,spi_controler.input_data,"spi_controler.input_data"); + sc_trace(tf,spi_controler.work_flg,"spi_controler.work_flg"); + c_clock cclk("cclk"); + cclk.m_clock(m_clock); + spi_controler.p_reset(p_reset); + spi_controler.m_clock(m_clock); + spi_controler.send_data(send_data); + spi_controler.resv_data(resv_data); + spi_controler.send(send); + spi_controler.read_MOSI(read_MOSI); + spi_controler.write_MOSO(write_MOSO); +} + +SPIControlerTop::~SPIControlerTop() +{ + sc_close_vcd_trace_file(tf); +} + +void SPIControlerTop::nextStep() +{ +} + +void SPIControlerTop::send() +{ +} + +char SPIControlerTop::read_MOSI() +{ + return 0; +} + +void SPIControlerTop::write_MOSO(char send_data) +{ +} + diff --git a/USB_Keybord_MAX3421E/src/SPI_controler_top.h b/USB_Keybord_MAX3421E/src/SPI_controler_top.h new file mode 100644 index 0000000..26e4914 --- /dev/null +++ b/USB_Keybord_MAX3421E/src/SPI_controler_top.h @@ -0,0 +1,19 @@ +#ifndef __SPI_CONTROLER_TOP_H__ +#define __SPI_CONTROLER_TOP_H__ +#include +#include +#include +#include + +class SPIControlerTop { +public : + sc_trace_file *tf; + SPIControlerTop(); + ~SPIControlerTop(); + void nextStep(); + void send(); + char read_MOSI(); + void write_MOSO(char send_data); + +}; +#endif /* __SPI_CONTROLER_TOP_H__ */ diff --git a/USB_Keybord_MAX3421E/src/TestMain.cpp b/USB_Keybord_MAX3421E/src/TestMain.cpp new file mode 100644 index 0000000..0a94554 --- /dev/null +++ b/USB_Keybord_MAX3421E/src/TestMain.cpp @@ -0,0 +1,30 @@ +#include +#include +#include +#include +#include +#include +#include +int sc_main( int argc, char* argv[] ) { + // イベント・マネージャとテスト・コントローラを生成する + CPPUNIT_NS::TestResult controller; + + // テスト結果収集リスナをコントローラにアタッチする + CPPUNIT_NS::TestResultCollector result; + controller.addListener( &result ); + + // 「.」で進行状況を出力するリスナをアタッチする + CPPUNIT_NS::BriefTestProgressListener progress; + controller.addListener( &progress ); + + // テスト・ランナーにテスト群を与え、テストする + CPPUNIT_NS::TestRunner runner; + runner.addTest( CPPUNIT_NS::TestFactoryRegistry::getRegistry().makeTest() ); + runner.run( controller ); + + // テスト結果を標準出力に吐き出す + CPPUNIT_NS::CompilerOutputter outputter( &result, CPPUNIT_NS::stdCOut() ); + outputter.write(); + + return result.wasSuccessful() ? 0 : 1; +}