Mercurial > hg > orthanc-stone
view Resources/CodeGeneration/Graveyard/test_stonegen.ts @ 975:e75fd08d6c75 toa2019083101
Cleaning in ICallable + changed fingerprint to plain char array to allow for
dead object examination + additional check in FetchContext callback to avoid
the unexplained rogue callbacks I have seen + protection in LoaderStateMachine::HandleSuccessMessage
in case things go wrong anyway
author | Benjamin Golinvaux <bgo@osimis.io> |
---|---|
date | Sat, 31 Aug 2019 13:45:04 +0200 |
parents | 6405435480ae |
children |
line wrap: on
line source
import * as VsolMessages from "./VsolMessages_generated"; function TEST_StoneGen_SerializeComplex() { let msg1_0 = new VsolMessages.Message1(); msg1_0.a = 42; msg1_0.b = "Benjamin"; msg1_0.c = VsolMessages.EnumMonth0.January; msg1_0.d = true; let msg1_1 = new VsolMessages.Message1(); msg1_1.a = 43; msg1_1.b = "Sandrine"; msg1_1.c = VsolMessages.EnumMonth0.March; msg1_0.d = false; let result1_0 = msg1_0.StoneSerialize(); let resultStr1_0 = JSON.stringify(result1_0); let result1_1 = msg1_1.StoneSerialize(); let resultStr1_1 = JSON.stringify(result1_1); // std::string toto; // std::vector<Message1> tata; // std::vector<std::string> tutu; // std::map<int32_t, std::string> titi; // std::map<int32_t, Message1> lulu; let msg2_0 = new VsolMessages.Message2(); msg2_0.toto = "Prout zizi"; msg2_0.tata.push(msg1_0); msg2_0.tata.push(msg1_1); msg2_0.tutu.push("Mercadet"); msg2_0.tutu.push("Poisson"); msg2_0.titi["44"] = "key 44"; msg2_0.titi["45"] = "key 45"; msg2_0.lulu["54"] = msg1_1; msg2_0.lulu["55"] = msg1_0; let result2 = msg2_0.StoneSerialize(); let resultStr2 = JSON.stringify(result2); let refResult2 = `{ "type" : "VsolMessages.Message2", "value" : { "lulu" : { "54" : { "a" : 43, "b" : "Sandrine", "c" : 2, "d" : true }, "55" : { "a" : 42, "b" : "Benjamin", "c" : 0, "d" : false } }, "tata" : [ { "a" : 42, "b" : "Benjamin", "c" : 0, "d" : false }, { "a" : 43, "b" : "Sandrine", "c" : 2, "d" : true } ], "titi" : { "44" : "key 44", "45" : "key 45" }, "toto" : "Prout zizi", "tutu" : [ "Mercadet", "Poisson" ] } } `; let refResult2Obj = JSON.parse(refResult2); let resultStr2Obj = JSON.parse(resultStr2); if (false) { if (refResult2Obj !== resultStr2Obj) { console.log("Results are different!"); console.log(`refResult2Obj['value']['lulu']['54'] = ${refResult2Obj['value']['lulu']['54']}`); console.log(`refResult2Obj['value']['lulu']['54']['a'] = ${refResult2Obj['value']['lulu']['54']['a']}`); console.log("************************************************************"); console.log("** REFERENCE OBJ **"); console.log("************************************************************"); console.log(refResult2Obj); console.log("************************************************************"); console.log("** ACTUAL OBJ **"); console.log("************************************************************"); console.log(resultStr2Obj); console.log("************************************************************"); console.log("** REFERENCE **"); console.log("************************************************************"); console.log(refResult2); console.log("************************************************************"); console.log("** ACTUAL **"); console.log("************************************************************"); console.log(resultStr2); throw new Error("Wrong serialization"); } } let refResultValue = JSON.parse(resultStr2); console.log(refResultValue); } class MyDispatcher { message1: VsolMessages.Message1; message2: VsolMessages.Message2; HandleMessage1(value: VsolMessages.Message1) { this.message1 = value; return true; } HandleMessage2(value: VsolMessages.Message2) { this.message2 = value; return true; } HandleA(value) { return true; } HandleB(value) { return true; } HandleC(value) { return true; } } ; function TEST_StoneGen_DeserializeOkAndNok() { let serializedMessage = `{ "type" : "VsolMessages.Message2", "value" : { "lulu" : { "54" : { "a" : 43, "b" : "Sandrine", "c" : 2, "d" : true }, "55" : { "a" : 42, "b" : "Benjamin", "c" : 0, "d" : false } }, "tata" : [ { "a" : 42, "b" : "Benjamin", "c" : 0, "d" : false }, { "a" : 43, "b" : "Sandrine", "c" : 2, "d" : true } ], "titi" : { "44" : "key 44", "45" : "key 45" }, "toto" : "Prout zizi", "tutu" : [ "Mercadet", "Poisson" ] } }`; let myDispatcher = new MyDispatcher(); let ok = VsolMessages.StoneDispatchToHandler(serializedMessage, myDispatcher); if (!ok) { throw Error("Error when dispatching message!"); } if (myDispatcher.message1 != undefined) { throw Error("(myDispatcher.Message1 != undefined)"); } if (myDispatcher.message2 == undefined) { throw Error("(myDispatcher.Message2 == undefined)"); } console.log("TEST_StoneGen_DeserializeOkAndNok: OK!"); } function main() { console.log("Entering main()"); TEST_StoneGen_SerializeComplex(); TEST_StoneGen_DeserializeOkAndNok(); return 0; } console.log(`Exit code is: ${main()}`);