00001
00006 #include "common/log.h"
00007 #include "test/io/codec/decoder/DecoderOutputTester.hpp"
00008
00009 #include "io/output/normal/BufferedNormalOutput.hpp"
00010 #include "io/codec/decoder/normal/SimpleNormalDecoder.hpp"
00011 #include "io/codec/decoder/normal/CacheNormalDecoder.hpp"
00012 #include "io/codec/decoder/df/CacheDFDecoder.hpp"
00013 #include "io/codec/decoder/df/SimpleBufferedDFDecoder.hpp"
00014
00015 #include <ctime>
00016 #include <iostream>
00017
00018
00019 void DecoderOutputTester::usageDecoderOutput()
00020 {
00021 std::cerr << "\nUsage: decoder_output_test type writer set_size output_file [random_seed]\n ";
00022 std::cerr << " type\t {normal, df}"<<std::endl;
00023 std::cerr << " If type = normal, then:"<<std::endl;
00024 std::cerr << " writer\t {simple, cache}"<<std::endl;
00025 std::cerr << " If type = df, then:"<<std::endl;
00026 std::cerr << " writer\t {buffered, cache}"<<std::endl;
00027 }
00028
00029 int DecoderOutputTester::doTest(
00030 int argc, char *argv[] )
00031 {
00032 if ( argc < 5 )
00033 {
00034 usageDecoderOutput();
00035 return 3;
00036 }
00037 else
00038 {
00039 unsigned int set_size = atoi(argv[3]);
00040 int rand_seed;
00041 log_info(0,"The size of the itemset is set to %d.", set_size);
00042 if(argc < 6)
00043 rand_seed = static_cast<int>(time(0));
00044 else
00045 rand_seed = atoi(argv[5]);
00046 log_info(0,"The random seed is set to %d.", rand_seed);
00047 srand(rand_seed);
00048
00049 if( strcmp(argv[1],"normal") == 0 )
00050 {
00051 if(strcmp(argv[2],"simple") == 0)
00052 {
00053 log_info(0,"Simple normal decoder is selected");
00054 writeAllCodedSubsetsNormal< SimpleNormalDecoder< > >(
00055 set_size, argv[4] );
00056 }
00057 else if(strcmp(argv[2],"cache") == 0)
00058 {
00059 log_info(0,"Cache normal decoder is selected");
00060 writeAllCodedSubsetsNormal< CacheNormalDecoder< > >(
00061 set_size, argv[4] );
00062 }
00063 else
00064 {
00065 usageDecoderOutput();
00066 log_err(0,"Unknown writer: %s", argv[2]);
00067 return 2;
00068 }
00069 }
00070 else if(strcmp(argv[1],"df") == 0)
00071 {
00072 if(strcmp(argv[2],"buffered") == 0)
00073 {
00074 log_info(0,"Buffered dfo decoder is selected");
00075 writeAllCodedSubsetsDF< SimpleBufferedDFDecoder< > >(
00076 set_size, argv[4] );
00077 }
00078 else if(strcmp(argv[2],"cache") == 0)
00079 {
00080 log_info(0,"Cache DF decoder is selected");
00081 writeAllCodedSubsetsDF< CacheDFDecoder< > >(
00082 set_size, argv[4] );
00083 }
00084 else
00085 {
00086 usageDecoderOutput();
00087 log_err(0,"Unknown writer: %s", argv[2]);
00088 return 2;
00089 }
00090 }
00091 else
00092 {
00093 usageDecoderOutput();
00094 log_err(0,"Unknown type: %s", argv[1]);
00095 return 1;
00096 }
00097 }
00098 return 0;
00099 }
00100