📄 fc_binutils.cpp
字号:
TEST_CASE("1","contents偺梫慺偑憹偊偰偄傞", fcbi.contents.size() == 1);
const char * scope = fcbi.contents.find(MAKE_BASEADDRESS(0x100))->second + MAKE_OFFSETADDRESS(0x100);
TEST_CASE("2","彂偒崬傑傟偰偄傞撪梕偑惓偟偄", *scope == 0);
} END_CASE;
BEGIN_CASE("2","懚嵼偡傞儁乕僕傊偺彂偒崬傒 (楢懕傾僋僙僗)") {
fcbi.writeByte(0x100, 0xff);
TEST_CASE("1","contents偺梫慺偑憹偊偰偄側偄", fcbi.contents.size() == 1);
const char * scope = fcbi.contents.find(MAKE_BASEADDRESS(0x100))->second + MAKE_OFFSETADDRESS(0x100);
TEST_CASE("2","彂偒崬傑傟偰偄傞撪梕偑惓偟偄", *scope == 0xff);
} END_CASE;
BEGIN_CASE("3","怴偟偄儁乕僕傊偺彂偒崬傒") {
fcbi.writeByte(0x10000000, 0xff);
TEST_CASE("1","contents偺梫慺偑憹偊偰偄傞", fcbi.contents.size() == 2);
const char * scope = fcbi.contents.find(MAKE_BASEADDRESS(0x10000000))->second + MAKE_OFFSETADDRESS(0x10000000);
TEST_CASE("2","彂偒崬傑傟偰偄傞撪梕偑惓偟偄", *scope == 0xff);
} END_CASE;
BEGIN_CASE("4","婛懚偺儁乕僕傊偺傾僋僙僗") {
fcbi.writeByte(0x100, 0x0);
TEST_CASE("1","contents偺梫慺偑憹偊偰偄側偄", fcbi.contents.size() == 2);
const char * scope = fcbi.contents.find(MAKE_BASEADDRESS(0x100))->second + MAKE_OFFSETADDRESS(0x100);
TEST_CASE("2","彂偒崬傑傟偰偄傞撪梕偑惓偟偄", *scope == 0x0);
} END_CASE;
} END_CASE;
BEGIN_CASE("readRecord","readRecord") {
fstream file("test",ios::out);
file << "S315080480F42F6C69622F6C642D6C696E75782E736F98\n\nS315080480F42F6C69622F6C642D6C696E75782E736F98\nS308080481042E320005\nDUMMY\nS31808048108040000001000000001000000474E550056\nS31008048108040000001000000001000000474E550056\n";
file.close();
file.open("test",ios::in);
BEGIN_CASE("1","惓忢働乕僗") {
string work;
bool result;
bool exception = false;
try { result = readRecord(file, work); } catch(Exception &) { exception = true; }
TEST_CASE("1","椺奜偼婲偙傜側偄", !exception);
TEST_CASE("2","娭悢偼true傪曉偡", result);
TEST_CASE("3","撉傒弌偝傟偨撪梕偑惓偟偄", work.compare("S315080480F42F6C69622F6C642D6C696E75782E736F98") == 0);
} END_CASE;
BEGIN_CASE("2","惓忢働乕僗 (嬻峴偺撉傒旘偽偟)") {
string work;
bool result;
bool exception = false;
try { result = readRecord(file, work); } catch(Exception &) { exception = true; }
TEST_CASE("1","椺奜偼婲偙傜側偄", !exception);
TEST_CASE("2","娭悢偼true傪曉偡", result);
TEST_CASE("3","撉傒弌偝傟偨撪梕偑惓偟偄", work.compare("S315080480F42F6C69622F6C642D6C696E75782E736F98") == 0);
} END_CASE;
BEGIN_CASE("3","僠僃僢僋僒儉偑岆偭偰偄傞僄儞僩儕") {
string work;
bool result;
bool exception = false;
try { result = readRecord(file, work); } catch(Exception &) { exception = true; }
TEST_CASE("1","椺奜傪偍偙偡", exception);
} END_CASE;
BEGIN_CASE("4","愭摢偑S偱巒傑傜側偄僄儞僩儕") {
string work;
bool result;
bool exception = false;
try { result = readRecord(file, work); } catch(Exception &) { exception = true; }
TEST_CASE("1","椺奜傪偍偙偡", exception);
} END_CASE;
BEGIN_CASE("5","巜掕偝傟偨挿偝傛傝傕挿偄僄儞僩儕") {
string work;
bool result;
bool exception = false;
try { result = readRecord(file, work); } catch(Exception &) { exception = true; }
TEST_CASE("1","椺奜傪偍偙偡", exception);
} END_CASE;
BEGIN_CASE("6","巜掕偝傟偨挿偝傛傝傕抁偄僄儞僩儕") {
string work;
bool result;
bool exception = false;
try { result = readRecord(file, work); } catch(Exception &) { exception = true; }
TEST_CASE("1","椺奜傪偍偙偡", exception);
} END_CASE;
BEGIN_CASE("7","僼傽僀儖廔抂") {
string work;
bool result;
bool exception = false;
try { result = readRecord(file, work); } catch(Exception &) { exception = true; }
TEST_CASE("1","椺奜傪偍偙偝側偄", !exception);
TEST_CASE("2","娭悢偼false傪曉偡", !result);
} END_CASE;
remove("test");
} END_CASE;
BEGIN_CASE("chopRecord","chopRecord") {
BEGIN_CASE("1","S1儗僐乕僪") {
string src("S106080480F42F4A");
chopRecord(src);
TEST_CASE("1","抣偑惓偟偄", src.compare("80F42F") == 0);
} END_CASE;
BEGIN_CASE("2","S2儗僐乕僪") {
string src("S206080480F42F4A");
chopRecord(src);
TEST_CASE("1","抣偑惓偟偄", src.compare("F42F") == 0);
} END_CASE;
BEGIN_CASE("3","S3儗僐乕僪") {
string src("S306080480F42F4A");
chopRecord(src);
TEST_CASE("1","抣偑惓偟偄", src.compare("2F") == 0);
} END_CASE;
BEGIN_CASE("4","S4儗僐乕僪") {
string src("S406080480F42F4A");
chopRecord(src);
TEST_CASE("1","抣偑惓偟偄", src.compare("080480F42F") == 0);
} END_CASE;
BEGIN_CASE("5","S5儗僐乕僪") {
string src("S506080480F42F4A");
chopRecord(src);
TEST_CASE("1","抣偑惓偟偄", src.compare("080480F42F") == 0);
} END_CASE;
} END_CASE;
BEGIN_CASE("loadDataContents/loadContents","loadDataContents/loadContents") {
fstream file("test", ios::out);
file << "S30D000000000123456789ABCDEF32\nS509FEDCBA9876543210BE";
file.close();
BEGIN_CASE("1","惓忢働乕僗") {
FileContainerBinutilsImpl fcbi;
file.open("test",ios::in);
bool exception = false;
try { fcbi.loadDataContents(file); } catch(...) { exception = true; }
TEST_CASE("1","椺奜偼婲偙傜側偄", !exception);
TEST_CASE("2","僨乕僞偑妋曐偝傟偰偄傞", fcbi.contents.size() == 1);
TEST_CASE("3","僼傽僀儖偼暵偠傜傟偰偄傞", !file.is_open());
BEGIN_CASE("4","奿擺偟偨抣偑惓偟偔撉傔傞") {
unsigned int i;
assert(sizeof(unsigned int) >= 4);
i = 0;
fcbi.loadContents(&i, 0, 4);
TEST_CASE("1","1-4僶僀僩栚", i == 0x67452301);
fcbi.loadContents(&i, 4, 4);
TEST_CASE("1","5-8僶僀僩栚", i == 0xefcdab89);
fcbi.loadContents(&i, 8, 4);
TEST_CASE("1","9-12僶僀僩栚", i == 0x98badcfe);
fcbi.loadContents(&i,12, 4);
TEST_CASE("1","13-16僶僀僩栚", i == 0x10325476);
} END_CASE;
} END_CASE;
remove("test");
BEGIN_CASE("2","loadContents偱堦搙偵儁乕僕僒僀僘傪挻偊傞検傪梫媮偡傞") {
FileContainerBinutilsImpl fcbi;
unsigned int i;
for(i=0;i<SIZE_LOADPAGE*2;++i)
fcbi.writeByte(i, i);
unsigned char * buffer = new unsigned char [SIZE_LOADPAGE * 2];
fcbi.loadContents(buffer, 0, SIZE_LOADPAGE * 2);
for(i=0;i<SIZE_LOADPAGE*2;++i)
if(*(buffer + i) != (i & 0xff))
TEST_FAIL;
delete [] buffer;
} END_CASE;
} END_CASE;
BEGIN_CASE("searchSymbolPrefix","searchSymbolPrefix") {
BEGIN_CASE("1","僾儗僼傿僋僗偑側偄") {
FileContainerBinutilsImpl fcbi;
fcbi.symbol_table.insert(pair<string, address_t>(MAGIC_SYMBOL, 0x100));
fcbi.searchSymbolPrefix();
if(!fcbi.symbol_prefix.empty())
TEST_FAIL;
} END_CASE;
BEGIN_CASE("2","曄悢柤偵\"_\"偑偮偔僞僀僾") {
FileContainerBinutilsImpl fcbi;
fcbi.symbol_table.insert(pair<string, address_t>("_" MAGIC_SYMBOL, 0x100));
fcbi.searchSymbolPrefix();
if(fcbi.symbol_prefix.compare("_") != 0)
TEST_FAIL;
} END_CASE;
BEGIN_CASE("3","\"__\"偵偼斀墳偟側偄") {
FileContainerBinutilsImpl fcbi;
fcbi.symbol_table.insert(pair<string, address_t>("__" MAGIC_SYMBOL, 0x100));
fcbi.searchSymbolPrefix();
if(!fcbi.symbol_prefix.empty())
TEST_FAIL;
} END_CASE;
BEGIN_CASE("4","敪尒偱偒側偄応崌丄曄峏偟側偄") {
FileContainerBinutilsImpl fcbi;
fcbi.symbol_prefix.assign("test");
fcbi.searchSymbolPrefix();
if(fcbi.symbol_prefix.compare("test") != 0)
TEST_FAIL;
} END_CASE;
} END_CASE;
BEGIN_CASE("searchByteOrder","searchByteOrder") {
BEGIN_CASE("1","儂僗僩偲摨偠僄儞僨傿傾儞") {
FileContainerBinutilsImpl fcbi;
unsigned int value = MAGIC_NUMBER;
fcbi.symbol_table.insert(pair<string, address_t>(MAGIC_SYMBOL, 0x100));
for(int i=0;i<4;i++)
fcbi.writeByte(0x100 + i, *((char *)&value + i));
fcbi.byteorder = UNKNOWN;
fcbi.searchByteOrder();
if(fcbi.byteorder != HOSTORDER)
TEST_FAIL;
} END_CASE;
BEGIN_CASE("2","儂僗僩偲堘偆僄儞僨傿傾儞") {
FileContainerBinutilsImpl fcbi;
unsigned int value = MAGIC_NUMBER;
fcbi.symbol_table.insert(pair<string, address_t>(MAGIC_SYMBOL, 0x100));
for(int i=0;i<4;i++)
fcbi.writeByte(0x100 + i, *((char *)&value + (3 - i)));
fcbi.byteorder = UNKNOWN;
fcbi.searchByteOrder();
if(fcbi.byteorder == HOSTORDER)
TEST_FAIL;
} END_CASE;
BEGIN_CASE("3","僔儞儃儖偑柍偄") {
FileContainerBinutilsImpl fcbi;
unsigned int value = MAGIC_NUMBER;
for(int i=0;i<4;i++)
fcbi.writeByte(0x100 + i, *((char *)&value + (3 - i)));
fcbi.byteorder = UNKNOWN;
fcbi.searchByteOrder();
if(fcbi.byteorder != UNKNOWN)
TEST_FAIL;
} END_CASE;
BEGIN_CASE("4","僨乕僞偑柍偄") {
FileContainerBinutilsImpl fcbi;
unsigned int value = MAGIC_NUMBER;
fcbi.symbol_table.insert(pair<string, address_t>(MAGIC_SYMBOL, 0x100));
fcbi.byteorder = UNKNOWN;
fcbi.searchByteOrder();
if(fcbi.byteorder != UNKNOWN)
TEST_FAIL;
} END_CASE;
} END_CASE;
chain.restoreContext();
}
#endif /* TESTSUITE */
#endif /* FILECONTAINER_BINUTILS || TESTSUITE */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -