diff --git a/ODP/Code/Agents/DemoTestRunner.lsa b/ODP/Code/Agents/DemoTestRunner.lsa new file mode 100644 index 0000000..401b196 --- /dev/null +++ b/ODP/Code/Agents/DemoTestRunner.lsa @@ -0,0 +1,171 @@ + + + +20171113T092958,84+03 +20171114T115058,58+03 +20171114T115058,57+03 +20171114T115058,58+03 +20171113T093000,12+03 +CN=Artem A Areshko/O=LiveScripts/C=RU +CN=Artem A Areshko/O=LiveScripts/C=RU +DemoTestRunner +65413 + + +AAAAAAAAAAA= + +0 + +Es +4 + + +AQAEAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + + + +gQYAAAAA + +2 +fL3 +8.5.3 + + +BgABAAAACACqAQAAAAAAAAUAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAwspXANeBJUMjmXMA1IElQwAAAAAAAAAAAAAAAAAAAAAAAAAAqqqqqqqq +qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq +qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq +qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq +qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq +qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq +qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq +qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq +qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq +qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq +qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq +qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq +qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq +qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq +qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq +qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq +qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq +qqqqqqqqqqqqqqqqqqqqqqqq + + + +gQKF/z0FAAAAADEFAAAnKytMb3R1c1NjcmlwdCBEZXZlbG9wbWVudCBFbnZpcm9ubWVudDoyOjU6 +KE9wdGlvbnMpOjA6NzQKJVJFTQoJVGVzdFJ1bm5lcgoJCglDcmVhdGVkOiBPY3QgNiwgMjAxNwoJ +QXV0aG9yOiBBcnRlbSBBIEFyZXNoa28vTGl2ZVNjcmlwdHMvUlUgKExpdmUtU2NyaXB0cykKCQoJ +RGVzY3JpcHRpb246IAolRU5EIFJFTQoKT3B0aW9uIFB1YmxpYwpPcHRpb24gRGVjbGFyZQoKVXNl +ICJydS5saXZlc2NyaXB0cy5kdW5pdC5kZW1vIgoKJVJFTQoJLS0tPT09IENoYW5nZSBMb2cgPT09 +LS0tCgktLS0gVmVyc2lvbjogWC5YLlg7IERELk1NLllZWVk7IE5hbWUKCTEuIAoJCiVFTkQgUkVN +CgonKytMb3R1c1NjcmlwdCBEZXZlbG9wbWVudCBFbnZpcm9ubWVudDoyOjU6KEZvcndhcmQpOjA6 +MQpEZWNsYXJlIENsYXNzIFRlc3RSdW5uZXIgQXMgQWJzdHJhY3RUZXN0UnVubmVyCkRlY2xhcmUg +U3ViIEluaXRpYWxpemUKCicrK0xvdHVzU2NyaXB0IERldmVsb3BtZW50IEVudmlyb25tZW50OjI6 +NTooRGVjbGFyYXRpb25zKTowOjEwClByaXZhdGUgQ29uc3QgREVTSUdOID0gIlRlc3RSdW5uZXIi +CicqKiogVGVzdFJ1bm5lciAqKioKJVJFTQoJRGVzY3JpcHRpb246IAolRU5EIFJFTQpDbGFzcyBU +ZXN0UnVubmVyIEFzIEFic3RyYWN0VGVzdFJ1bm5lcgoJCgknRG9SdW5UZXN0cwoJJVJFTQoJCURl +c2NyaXB0aW9uOiAKCSVFTkQgUkVNCglQcml2YXRlIFN1YiBEb1J1blRlc3RzKCkKCQlPbiBFcnJv +ciBHb1RvIEVycm9ySGFuZGxlcgoJCUNvbnN0IEZ1bmNOYW1lID0gIlRlc3RSdW5uZXIuRG9SdW5U +ZXN0cyAoKSIKCQkKCQlEaW0gZGVtb1Rlc3QgQXMgTmV3IERlbW9UZXN0KCkKCQkKCQlDYWxsIGRl +bW9UZXN0LlRlc3RBc3NlcnRFeGFtcGxlKCkKCQlDYWxsIGRlbW9UZXN0LlRlc3RBc3NlcnRFcnJv +ckV4YW1wbGUoKQoJCQoJCUdvVG8gZW5kaApFcnJvckhhbmRsZXI6CgkJQ2FsbCBNZS5UZXN0RmFp +bGVkKEVycm9yJCkKCQlSZXN1bWUgTmV4dAplbmRoOgoJRW5kIFN1YgoKRW5kIENsYXNzCicrK0xv +dHVzU2NyaXB0IERldmVsb3BtZW50IEVudmlyb25tZW50OjI6MjpJbml0aWFsaXplOjE6MTAKU3Vi +IEluaXRpYWxpemUKCU9uIEVycm9yIEdvVG8gRXJyb3JIYW5kbGVyCglDb25zdCBGdW5jTmFtZSA9 +ICJJbml0aWFsaXplICgpIgoJCglEaW0gdGVzdFJ1bm5lciBBcyBOZXcgVGVzdFJ1bm5lcigpCgkK +CUNhbGwgdGVzdFJ1bm5lci5SdW4oKQoJCglHb1RvIGVuZGgKRXJyb3JIYW5kbGVyOgoJRXJyb3Ig +RXJyLCAiKCIgJiBERVNJR04gJiAiKSAiICYgRnVuY05hbWUgJiAiLCBsaW5lICIgJiBFcmwgJiBD +aHIoMTApICYgRXJyb3IkCmVuZGg6CkVuZCBTdWIKCgAi + + + +gQKF/4QSAAAAAHgSAAABAAACTFNPQgMAFAhlbgAABAAlAKMAAAAAAAQLlAQABgAApAcAAAAAAAAA +ACwAAAEgAEAAAADMAVwAAAAAAAAAAgAAABgAAAYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAYABhgAGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAGQBZAFkAWQBAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAFQAJAgAAAAAAAAAAAAAAADkAuQCVABU +ACQIJAgAAAAAwAfABwAAAAAAAAAAAAAAAIACgAIAAAAAAQAFAExvdHVzIFByb2R1Y3QAAABWMC4w +AAAAAAAAAAAAAAAAAAAAAAAAAACjAAAAAAAAAAQLAACUBAAAAAAAAAAAAAABAAAAAAAAAAAAAAAA +AAAAAQAAAAAAAAAAAAAABAAAAFczMkklAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAADAJgEAAAAAFADDQAkAEEAUwBTAEkAUwBUAEEAQwBUAEkATwBOAAAA +dAADAE4ARQBXAAAAiAAGAEQARQBMAEUAVABFAAAAAAAUAQoASQBOAEkAVABJAEEATABJAFoARQAA +AAAAkAAJAFQARQBSAE0ASQBOAEEAVABFAAAAyAAGAE8AQgBKAEUAQwBUAAAAAACwAQAAAAAAAEwB +GQByAHUALgBsAGkAdgBlAHMAYwByAGkAcAB0AHMALgBkAHUAbgBpAHQALgBkAGUAbQBvAAAAMAEZ +AFIAVQAuAEwASQBWAEUAUwBDAFIASQBQAFQAUwAuAEQAVQBOAEkAVAAuAEQARQBNAE8AAAB4AQYA +RABFAFMASQBHAE4AAAAAANACCgBUAGUAcwB0AFIAdQBuAG4AZQByAAAAAAAEAgoAVABFAFMAVABS +AFUATgBOAEUAUgAAAAAA7AESAEEAQgBTAFQAUgBBAEMAVABUAEUAUwBUAFIAVQBOAE4ARQBSAAAA +AAA8AhkAUgBVAC4ATABJAFYARQBTAEMAUgBJAFAAVABTAC4ARABVAE4ASQBUAC4AQwBPAFIARQAA +ANQDCgBEAE8AUgBVAE4AVABFAFMAVABTAAAAAACcAgwARQBSAFIATwBSAEgAQQBOAEQATABFAFIA +AAAAAFQCCABGAFUATgBDAE4AQQBNAEUAAAAAADADGABUAGUAcwB0AFIAdQBuAG4AZQByAC4ARABv +AFIAdQBuAFQAZQBzAHQAcwAgACgAKQAAAAAAdAIIAEQARQBNAE8AVABFAFMAVAAAAAAA//8MAEEA +QgBTAFQAUgBBAEMAVABUAEUAUwBUAAAAAAAcAxEAVABFAFMAVABBAFMAUwBFAFIAVABFAFgAQQBN +AFAATABFAAAA4AIWAFQARQBTAFQAQQBTAFMARQBSAFQARQBSAFIATwBSAEUAWABBAE0AUABMAEUA +AAAAADwDBABFAE4ARABIAAAAAAD8AgoAVABFAFMAVABGAEEASQBMAEUARAAAAAAAKAMNAEkAbgBp +AHQAaQBhAGwAaQB6AGUAIAAoACkAAADwAwMAUgBVAE4AAAC8AwEAKAAAAP//AgApACAAAAAAAP// +BwAsACAAbABpAG4AZQAgAAAAfAMSAFMASQBNAFAATABFAFYAQQBMAFUARQBNAEEAVABDAEgARQBS +AAAAAAAQBB0AUgBVAC4ATABJAFYARQBTAEMAUgBJAFAAVABTAC4ARABVAE4ASQBUAC4ATQBBAFQA +QwBIAEUAUgBTAAAATAQIAEkATQBBAFQAQwBIAEUAUgAAAAAA//8LACgAVABlAHMAdABSAHUAbgBu +AGUAcgAAAP//DQAoAFQAZQBzAHQAUgB1AG4AbgBlAHIAKQAgAAAA//8aACgAVABlAHMAdABSAHUA +bgBuAGUAcgApACAASQBuAGkAdABpAGEAbABpAHoAZQAgACgAKQAAAAAA//8hACgAVABlAHMAdABS +AHUAbgBuAGUAcgApACAASQBuAGkAdABpAGEAbABpAHoAZQAgACgAKQAsACAAbABpAG4AZQAgAAAA +BQAICwAAAACvnUCPGAAAAAAAzACwjjsLAAAAAAAAAAAEAAAAAAYAAAQBBgAAAAAAGAEAAAAAAAAA +AAAAAAAAABgAAAAEAHwByJU8C8B+NgsEAAAAJgA4ALAWAAALAEAAgAIAAFABAAAAAAAABQAAALgA +sAoUARQBAAAAAAAAAADwBvAGuAC4AEwKTAoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACwCrAKAAAA +AAAAAAC4ABQBAAAZACEAVAAMFwAACABTABQBAAAkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAGABkAIQBUAHgdAAAI +AFMA8AYAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAsAEAAAAAAANAEAAAAAAAADAAAAwAFoBWgFaAUAAAAAAAAA +AMABwAHQBNAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABUANAEaAUAABkA +CAADANAEAAC0AQAAZAEAAAIAAABYAqAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAABYAqAEAAAAAAAAAAAJAAAADAAAABQAAAACAAAAsATABAAAAACwBMAEAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAIAoASgBPABBgAAAAAACAIA +AAAAAAAAAAAAAAAAACYABABoDQAACwBAAOQCAABAAgAAAAAAAAQAAAD4A/AJUARQBAAAAAAAAAAA +TAdMB/gD+AMAAAAAAAAAAAAAAAAAAAAA8AnwCQAAAAAAAAAAAAAAAAAAAAAAAOQC+ANQBAAAGQAm +ADgAUBEAAAsAQADABwAAWAIAAAAAAAACAAAASAOgA6ADoAMAAAAAAAAAAAAAAABIA0gDAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEgDoAMAABkAIQDkAoATAAAIAFMAoAMA +ACQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAACEA5AIYFAAACABTAAAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAhAIAC6BEAAAgA +UwBQBAAAJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAIQCAAoASAAAIAFMATAcAADAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAgAA +AAAAQAIJBBAAgAINAAgAwATABNABAAA9ABkADQAIAAAAAADUAgAATAAZAAgAEwBoBQAAJAAAAGQB +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAACQAAAFMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAATAAAAAAAwAAAAZAEAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAAAWAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAIAAAAAAAAAEQAAAAAAAAAAgAAAJgGuAa4BrgGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAJgGmAYAAAAAAAAAAAkAAABdAAAAFAAAAAIAAADIBtgGAAAAAMgG2AYA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAgC4BgAA8AEGAAAA +AAAAAwAAAAAAAAAAAAAAAAAAAwACAAAAAAA0AQkEEABkAQ0ACADYBtgG0AEAAIUAGQANAAgAAAAA +ANQCAACcABkAIQBUAKgZAAAIAEMATAoAALQBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAYAGQAhAIACxA0AAAgAUwDw +CQAAeAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAMABgAJBMAHGQAYAAAAOACAA8B+NguwjjsLCAwAACYApAdMAQAACwBA +ACQIAABUAwAAAAAAAAIAAAA4CZgJmAmYCQAAAAAAAAAAAAAAADgJOAkAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAACAAAAAAACQIOAmYCQIAGQAmADgAYAYAAAsAQAAAAAAAwAMAAAAAAAAC +AAAAiAjgCOAI4AgAAAAAAAAAAAAAAACICIgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAIgI4AgAABkAIQAkCGQHAAAIAFMA4AgAACQAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACEAJAj8BwAA +CABTAAAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAhAMAHyAEAAAgAUwCYCQAAJAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAMAAAAA +AAYAGQAhAMAHqAMAAAgAUwAAAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIQCAAuAQAAAIAFMAAAAAAKACAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAACAAYAAQAhAFQAgBoAAAgAQwCwCgAA5AIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAUABgAGAAYAAAAAABkA +IQBUAMAYAAAHAFMAAAAAACADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAABgAEAKcAAAAAADoAABoOANKUAB0AABoo +AAsAAAAACTolABorAF6gBCqAAiOmGi0AS6AELEwHIxouAEugBCzwCSMaMAA6DwAaMQAaMgAvTAoW +IxozAA0aNAAaNQAdMLgAIx0wFAEjHRo6AAsAAAAACTocABo9AF64BipkASOmGj8AS7gGLLAKIzEa +QQA6FwAaQgAaQwAUfVAEFb+PCgMGQpO/Fr+bERpEABpFAB0CAAAAEQAUAAAAAAD//wEAAwAXAAAA +GwBEADgACgAAAEE= + +20171114T115058,57+03 + diff --git a/ODP/Code/Agents/TestRunner.lsa b/ODP/Code/Agents/TestRunner.lsa index 31ffe22..52a5402 100644 --- a/ODP/Code/Agents/TestRunner.lsa +++ b/ODP/Code/Agents/TestRunner.lsa @@ -1,11 +1,11 @@ - + 20171013T123825,82+03 -20171111T000748,15+03 -20171111T000748,14+03 -20171111T000748,15+03 +20171114T115058,60+03 +20171114T115058,59+03 +20171114T115058,60+03 20171111T000240,62+03 CN=Artem A Areshko/O=LiveScripts/C=RU CN=Artem A Areshko/O=LiveScripts/C=RU @@ -33,8 +33,8 @@ gQYAAAAA 8.5.3 -BgABAAAACAB2AQAAAAAAAAUAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA -AAAAAAAAAAAAAAAAAAAARuZzANSBJUMjmXMA1IElQwAAAAAAAAAAAAAAAAAAAAAAAAAAqqqqqqqq +BgABAAAACACWAQAAAAAAAAUAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAA4s8jANeBJUMjmXMA1IElQwAAAAAAAAAAAAAAAAAAAAAAAAAAqqqqqqqq qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq @@ -55,175 +55,85 @@ qqqqqqqqqqqqqqqqqqqqqqqq -gQKF/xkMAAAAAA0MAAAnKytMb3R1c1NjcmlwdCBEZXZlbG9wbWVudCBFbnZpcm9ubWVudDoyOjU6 +gQKF/9oEAAAAAM4EAAAnKytMb3R1c1NjcmlwdCBEZXZlbG9wbWVudCBFbnZpcm9ubWVudDoyOjU6 KE9wdGlvbnMpOjA6NzQKJVJFTQoJVGVzdFJ1bm5lcgoJCglDcmVhdGVkOiBPY3QgNiwgMjAxNwoJ QXV0aG9yOiBBcnRlbSBBIEFyZXNoa28vTGl2ZVNjcmlwdHMvUlUgKExpdmUtU2NyaXB0cykKCQoJ RGVzY3JpcHRpb246IAolRU5EIFJFTQoKT3B0aW9uIFB1YmxpYwpPcHRpb24gRGVjbGFyZQoKVXNl ICJydS5saXZlc2NyaXB0cy5kdW5pdC5jb3JlIgoKJVJFTQoJLS0tPT09IENoYW5nZSBMb2cgPT09 LS0tCgktLS0gVmVyc2lvbjogWC5YLlg7IERELk1NLllZWVk7IE5hbWUKCTEuIAoJCiVFTkQgUkVN CgonKytMb3R1c1NjcmlwdCBEZXZlbG9wbWVudCBFbnZpcm9ubWVudDoyOjU6KEZvcndhcmQpOjA6 -MQpEZWNsYXJlIENsYXNzIFRlc3RSdW5uZXIKRGVjbGFyZSBTdWIgSW5pdGlhbGl6ZQoKJysrTG90 -dXNTY3JpcHQgRGV2ZWxvcG1lbnQgRW52aXJvbm1lbnQ6Mjo1OihEZWNsYXJhdGlvbnMpOjA6MTAK -UHJpdmF0ZSBDb25zdCBERVNJR04gPSAiVGVzdFJ1bm5lciIKCicqKiogVGVzdFJ1bm5lciAqKioK -JVJFTQoJRGVzY3JpcHRpb246IAolRU5EIFJFTQpDbGFzcyBUZXN0UnVubmVyCgkKCSdSdW4KCSVS -RU0KCQlEZXNjcmlwdGlvbjogCgklRU5EIFJFTQoJUHVibGljIEZ1bmN0aW9uIFJ1bigpCgkJT24g -RXJyb3IgR29UbyBFcnJvckhhbmRsZXIKCQlDb25zdCBGdW5jTmFtZSA9ICJUZXN0UnVubmVyLlJ1 -biAoKSIKCQkKCQlQcmludCAiPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSIKCQlQ -cmludCAiUnVubmluZyB0ZXN0cy4uLiIKCQlQcmludCAiLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t -LS0tLS0tLS0tLSIKCQkKCQlDYWxsIE1lLkRvUnVuVGVzdHMoKQoJCQoJCVByaW50ICItLS0tLS0t -LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIgoJCVByaW50ICJGaW5pc2hlZCB0ZXN0cyIKCQlQ -cmludCAiLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSIKCQkKCQlDYWxsIE1lLlBy -aW50UmVzdWx0KCkKCQlQcmludCAiPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSIK -CQkKCQlHb1RvIGVuZGgKRXJyb3JIYW5kbGVyOgoJCUVycm9yIEVyciwgIigiICYgREVTSUdOICYg -IikgIiAmIEZ1bmNOYW1lICYgIiwgbGluZSAiICYgRXJsICYgQ2hyKDEwKSAmIEVycm9yJAplbmRo -OgoJRW5kIEZ1bmN0aW9uCgkKCSdSdW5UZXN0cwoJJVJFTQoJCURlc2NyaXB0aW9uOiAKCSVFTkQg -UkVNCglQcml2YXRlIFN1YiBEb1J1blRlc3RzKCkKCQlPbiBFcnJvciBHb1RvIEVycm9ySGFuZGxl -cgoJCUNvbnN0IEZ1bmNOYW1lID0gIlRlc3RSdW5uZXIuUnVuVGVzdHMgKCkiCgkJCgkJJ092ZXJy -aWRlCgkJCgkJR29UbyBlbmRoCkVycm9ySGFuZGxlcjoKCQlDYWxsIE1lLlRlc3RGYWlsZWQoRXJy -b3IkKQoJCVJlc3VtZSBOZXh0CmVuZGg6CglFbmQgU3ViCgkKCSdUZXN0RmFpbGVkCgklUkVNCgkJ -RGVzY3JpcHRpb246IAoJJUVORCBSRU0KCVByaXZhdGUgU3ViIFRlc3RGYWlsZWQoZXJyb3JTdHJp -bmcgQXMgU3RyaW5nKQoJCU9uIEVycm9yIEdvVG8gRXJyb3JIYW5kbGVyCgkJQ29uc3QgRnVuY05h -bWUgPSAiVGVzdFJ1bm5lci5UZXN0RmFpbGVkICgpIgoJCQoJCURpbSB0ZXN0TmFtZSBBcyBTdHJp -bmcKCQkKCQl0ZXN0TmFtZSA9IE1lLkdldFRlc3ROYW1lKEVycm9yJCkKCQlDYWxsIFRlc3RDb250 -ZXh0KCkuU2V0VGVzdFN0YXR1cyh0ZXN0TmFtZSwgTFNfVEVTVF9TVEFUVVNfRkFJTEVEKQoJCVBy -aW50IHRlc3ROYW1lICYgIjogIiAmIExTX1RFU1RfU1RBVFVTX0ZBSUxFRAoJCQoJCUdvVG8gZW5k -aApFcnJvckhhbmRsZXI6CgkJRXJyb3IgRXJyLCAiKCIgJiBERVNJR04gJiAiKSAiICYgRnVuY05h -bWUgJiAiLCBsaW5lICIgJiBFcmwgJiBDaHIoMTApICYgRXJyb3IkCmVuZGg6CglFbmQgU3ViCgkK -CSdHZXRUZXN0TmFtZQoJJVJFTQoJCURlc2NyaXB0aW9uOiAKCSVFTkQgUkVNCglQcml2YXRlIEZ1 -bmN0aW9uIEdldFRlc3ROYW1lKGVycm9yU3RyaW5nIEFzIFN0cmluZykKCQlPbiBFcnJvciBHb1Rv -IEVycm9ySGFuZGxlcgoJCUNvbnN0IEZ1bmNOYW1lID0gIlRlc3RSdW5uZXIuR2V0VGVzdE5hbWUg -KCkiCgkJCgkJR2V0VGVzdE5hbWUgPSBTdHJSaWdodChTdHJMZWZ0KGVycm9yU3RyaW5nJCwgIiwi -KSwgIikgIikKCQkKCQlHb1RvIGVuZGgKRXJyb3JIYW5kbGVyOgoJCUVycm9yIEVyciwgIigiICYg -REVTSUdOICYgIikgIiAmIEZ1bmNOYW1lICYgIiwgbGluZSAiICYgRXJsICYgQ2hyKDEwKSAmIEVy -cm9yJAplbmRoOgoJRW5kIEZ1bmN0aW9uCgkKCSdQcmludFJlc3VsdAoJJVJFTQoJCURlc2NyaXB0 -aW9uOiAKCSVFTkQgUkVNCglQcml2YXRlIFN1YiBQcmludFJlc3VsdCgpCgkJT24gRXJyb3IgR29U -byBFcnJvckhhbmRsZXIKCQlDb25zdCBGdW5jTmFtZSA9ICJUZXN0UnVubmVyLlByaW50UmVzdWx0 -ICgpIgoJCQoJCURpbSByZXN1bHQgQXMgVGVzdFJlc3VsdAoJCQoJCVNldCByZXN1bHQgPSBUZXN0 -Q29udGV4dC5HZXRSZXN1bHQoKQoJCVByaW50ICJUZXN0cyBzdW1tYXJ5LiBUb3RhbDogIiAmIHJl -c3VsdC5Ub3RhbCAmICI7IFN1Y2Nlc3M6ICIgJiBfCgkJcmVzdWx0LlN1Y2Nlc3MgJiAiOyBGYWls -ZWQ6ICIgJiByZXN1bHQuRmFpbGVkCgkJCgkJR29UbyBlbmRoCkVycm9ySGFuZGxlcjoKCQlFcnJv -ciBFcnIsICIoIiAmIERFU0lHTiAmICIpICIgJiBGdW5jTmFtZSAmICIsIGxpbmUgIiAmIEVybCAm -IENocigxMCkgJiBFcnJvciQKZW5kaDoKCUVuZCBTdWIKCkVuZCBDbGFzcwonKytMb3R1c1Njcmlw -dCBEZXZlbG9wbWVudCBFbnZpcm9ubWVudDoyOjI6SW5pdGlhbGl6ZToxOjEwClN1YiBJbml0aWFs -aXplCglPbiBFcnJvciBHb1RvIEVycm9ySGFuZGxlcgoJQ29uc3QgRnVuY05hbWUgPSAiSW5pdGlh -bGl6ZSAoKSIKCQoJRGltIHRlc3RSdW5uZXIgQXMgTmV3IFRlc3RSdW5uZXIKCQoJQ2FsbCB0ZXN0 -UnVubmVyLlJ1bigpCgkKCUdvVG8gZW5kaApFcnJvckhhbmRsZXI6CglFcnJvciBFcnIsICIoIiAm -IERFU0lHTiAmICIpICIgJiBGdW5jTmFtZSAmICIsIGxpbmUgIiAmIEVybCAmIENocigxMCkgJiBF -cnJvciQKZW5kaDoKRW5kIFN1YgoAIg== +MQpEZWNsYXJlIENsYXNzIFRlc3RSdW5uZXIgQXMgQWJzdHJhY3RUZXN0UnVubmVyCkRlY2xhcmUg +U3ViIEluaXRpYWxpemUKCicrK0xvdHVzU2NyaXB0IERldmVsb3BtZW50IEVudmlyb25tZW50OjI6 +NTooRGVjbGFyYXRpb25zKTowOjEwClByaXZhdGUgQ29uc3QgREVTSUdOID0gIlRlc3RSdW5uZXIi +CicqKiogVGVzdFJ1bm5lciAqKioKJVJFTQoJRGVzY3JpcHRpb246IAolRU5EIFJFTQpDbGFzcyBU +ZXN0UnVubmVyIEFzIEFic3RyYWN0VGVzdFJ1bm5lcgoJCgknRG9SdW5UZXN0cwoJJVJFTQoJCURl +c2NyaXB0aW9uOiAKCSVFTkQgUkVNCglQcml2YXRlIFN1YiBEb1J1blRlc3RzKCkKCQlPbiBFcnJv +ciBHb1RvIEVycm9ySGFuZGxlcgoJCUNvbnN0IEZ1bmNOYW1lID0gIlRlc3RSdW5uZXIuRG9SdW5U +ZXN0cyAoKSIKCQkKCQknSW1wbGVtZW50CgkJCgkJR29UbyBlbmRoCkVycm9ySGFuZGxlcjoKCQlD +YWxsIE1lLlRlc3RGYWlsZWQoRXJyb3IkKQoJCVJlc3VtZSBOZXh0CmVuZGg6CglFbmQgU3ViCgpF +bmQgQ2xhc3MKJysrTG90dXNTY3JpcHQgRGV2ZWxvcG1lbnQgRW52aXJvbm1lbnQ6MjoyOkluaXRp +YWxpemU6MToxMApTdWIgSW5pdGlhbGl6ZQoJT24gRXJyb3IgR29UbyBFcnJvckhhbmRsZXIKCUNv +bnN0IEZ1bmNOYW1lID0gIkluaXRpYWxpemUgKCkiCgkKCURpbSB0ZXN0UnVubmVyIEFzIE5ldyBU +ZXN0UnVubmVyKCkKCQoJQ2FsbCB0ZXN0UnVubmVyLlJ1bigpCgkKCUdvVG8gZW5kaApFcnJvckhh +bmRsZXI6CglFcnJvciBFcnIsICIoIiAmIERFU0lHTiAmICIpICIgJiBGdW5jTmFtZSAmICIsIGxp +bmUgIiAmIEVybCAmIENocigxMCkgJiBFcnJvciQKZW5kaDoKRW5kIFN1YgoKCgA= -gQKF/6QYAAAAAJgYAAABAAACTFNPQgQAFAhlbgAABAAxAAACAAAAAPgKTAl4BwAABAAAAAAAAAAA -ACwAyAAgAEAAAABYAVwAAAAAAAAAAwAAABgAOAoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA -eAd4BxgAGAA4CjgKAAAAAAAAAAAAAAAAAQAAAGgIaAhoCGgIAAAAAAAAAAAAAAAAAAAAAAAAAAAA -AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAADgAOAA4ADgAAAAAAAAAAAAAAAAAAAAAAAAA -AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAgFzAjMCMwIAAAAAAAAAAAAAAAAAAAA -AAgFCAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAFAExvdHVzIFByb2R1Y3QAAABWMC4w -AAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAPgKAABMCQAAAAAAAAAAAAABAAAAAAAAAAAAAAAA +gQKF/8wLAAAAAMALAAABAAACTFNPQgMAFAhlbgAABAAUAIQAAAAAALwFRAO4AwAABAAAAAAAAAAA +ACwAyAAgAEAAAACUAVwAAAAAAAAAAgAAABgAuAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +uAO4AxgAGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAFABUAFQAVABAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAEAAQAAAAAAAAAAAAAAAAAAAAAAAQABA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAFAExvdHVzIFByb2R1Y3QAAABWMC4w +AAAAAAAAAAAAAAAAAAAAAAAAAACEAAAAAAAAALwFAABEAwAAAAAAAAAAAAABAAAAAAAAAAAAAAAA AAAAAQAAAAAAAAAAAAAABAAAAFczMkklAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA -AAAAAAAAAAAAAAAAAAAAAAAIAAgAAAAAAEwJAAADAFAJAAAAAFwEDQAkAEEAUwBTAEkAUwBUAEEA -QwBUAEkATwBOAAAAdAADAE4ARQBXAAAAiAAGAEQARQBMAEUAVABFAAAAAAAUAQoASQBOAEkAVABJ -AEEATABJAFoARQAAAAAAkAAJAFQARQBSAE0ASQBOAEEAVABFAAAAMAEGAE8AQgBKAEUAQwBUAAAA -AACQAQAAAAAAAHgBGQByAHUALgBsAGkAdgBlAHMAYwByAGkAcAB0AHMALgBkAHUAbgBpAHQALgBj -AG8AcgBlAAAAAAEZAFIAVQAuAEwASQBWAEUAUwBDAFIASQBQAFQAUwAuAEQAVQBOAEkAVAAuAEMA -TwBSAEUAAABMAQYARABFAFMASQBHAE4AAAAAANQCCgBUAGUAcwB0AFIAdQBuAG4AZQByAAAAAADs -AgoAVABFAFMAVABSAFUATgBOAEUAUgAAAAAAuAEDAFIAVQBOAAAA5AIMAEUAUgBSAE8AUgBIAEEA -TgBEAEwARQBSAAAAAAAEAggARgBVAE4AQwBOAEEATQBFAAAAAAAsAhEAVABlAHMAdABSAHUAbgBu -AGUAcgAuAFIAdQBuACAAKAApAAAAAAQiAD0APQA9AD0APQA9AD0APQA9AD0APQA9AD0APQA9AD0A -PQA9AD0APQA9AD0APQA9AD0APQA9AD0APQA9AD0APQA9AD0AAAAAAJQCEABSAHUAbgBuAGkAbgBn -ACAAdABlAHMAdABzAC4ALgAuAAAAAAB4AiIALQAtAC0ALQAtAC0ALQAtAC0ALQAtAC0ALQAtAC0A -LQAtAC0ALQAtAC0ALQAtAC0ALQAtAC0ALQAtAC0ALQAtAC0ALQAAAAAAUAQKAEQATwBSAFUATgBU -AEUAUwBUAFMAAAAAALgCDgBGAGkAbgBpAHMAaABlAGQAIAB0AGUAcwB0AHMAAAAAAHgDCwBQAFIA -SQBOAFQAUgBFAFMAVQBMAFQAAAD4AgQARQBOAEQASAAAAAAAQAMBACgAAAAMAwIAKQAgAAAAAABc -AwcALAAgAGwAaQBuAGUAIAAAAJQEFgBUAGUAcwB0AFIAdQBuAG4AZQByAC4AUgB1AG4AVABlAHMA -dABzACAAKAApAAAAAADkAwoAVABFAFMAVABGAEEASQBMAEUARAAAAAAAsAMLAEUAUgBSAE8AUgBT -AFQAUgBJAE4ARwAAAMgDGABUAGUAcwB0AFIAdQBuAG4AZQByAC4AVABlAHMAdABGAGEAaQBsAGUA -ZAAgACgAKQAAAAAAfAUIAFQARQBTAFQATgBBAE0ARQAAAAAAYAYLAEcARQBUAFQARQBTAFQATgBB -AE0ARQAAACAECwBUAEUAUwBUAEMATwBOAFQARQBYAFQAAABQBQ0AUwBFAFQAVABFAFMAVABTAFQA -QQBUAFUAUwAAANQEFQBMAFMAXwBUAEUAUwBUAF8AUwBUAEEAVABVAFMAXwBGAEEASQBMAEUARAAA -AAQFAgA6ACAAAAAAAMgIGQBUAGUAcwB0AFIAdQBuAG4AZQByAC4ARwBlAHQAVABlAHMAdABOAGEA -bQBlACAAKAApAAAAnAQBACwAAADoBBkAVABlAHMAdABSAHUAbgBuAGUAcgAuAFAAcgBpAG4AdABS -AGUAcwB1AGwAdAAgACgAKQAAAGAFBgBSAEUAUwBVAEwAVAAAAAAAsAYKAFQARQBTAFQAUgBFAFMA -VQBMAFQAAAAAABwFCQBHAEUAVABSAEUAUwBVAEwAVAAAAJAFFgBUAGUAcwB0AHMAIABzAHUAbQBt -AGEAcgB5AC4AIABUAG8AdABhAGwAOgAgAAAAAACsBQUAVABPAFQAQQBMAAAAwAULADsAIABTAHUA -YwBjAGUAcwBzADoAIAAAAP//BwBTAFUAQwBDAEUAUwBTAAAA4AUKADsAIABGAGEAaQBsAGUAZAA6 -ACAAAAAAAPwFBgBGAEEASQBMAEUARAAAAAAAHAYNAEkAbgBpAHQAaQBhAGwAaQB6AGUAIAAoACkA -AAAABwsAKABUAGUAcwB0AFIAdQBuAG4AZQByAAAA//8NACgAVABlAHMAdABSAHUAbgBuAGUAcgAp -ACAAAABgBx4AKABUAGUAcwB0AFIAdQBuAG4AZQByACkAIABUAGUAcwB0AFIAdQBuAG4AZQByAC4A -UgB1AG4AIAAoACkAAAAAALQHJQAoAFQAZQBzAHQAUgB1AG4AbgBlAHIAKQAgAFQAZQBzAHQAUgB1 -AG4AbgBlAHIALgBSAHUAbgAgACgAKQAsACAAbABpAG4AZQAgAAAA//8lACgAVABlAHMAdABSAHUA -bgBuAGUAcgApACAAVABlAHMAdABSAHUAbgBuAGUAcgAuAFQAZQBzAHQARgBhAGkAbABlAGQAIAAo -ACkAAAD//ywAKABUAGUAcwB0AFIAdQBuAG4AZQByACkAIABUAGUAcwB0AFIAdQBuAG4AZQByAC4A -VABlAHMAdABGAGEAaQBsAGUAZAAgACgAKQAsACAAbABpAG4AZQAgAAAAAAAUCCYAKABUAGUAcwB0 -AFIAdQBuAG4AZQByACkAIABUAGUAcwB0AFIAdQBuAG4AZQByAC4ARwBlAHQAVABlAHMAdABOAGEA -bQBlACAAKAApAAAAAABoCC0AKABUAGUAcwB0AFIAdQBuAG4AZQByACkAIABUAGUAcwB0AFIAdQBu -AG4AZQByAC4ARwBlAHQAVABlAHMAdABOAGEAbQBlACAAKAApACwAIABsAGkAbgBlACAAAAAECSYA -KABUAGUAcwB0AFIAdQBuAG4AZQByACkAIABUAGUAcwB0AFIAdQBuAG4AZQByAC4AUAByAGkAbgB0 -AFIAZQBzAHUAbAB0ACAAKAApAAAAAAD//y0AKABUAGUAcwB0AFIAdQBuAG4AZQByACkAIABUAGUA -cwB0AFIAdQBuAG4AZQByAC4AUAByAGkAbgB0AFIAZQBzAHUAbAB0ACAAKAApACwAIABsAGkAbgBl -ACAAAAD//xoAKABUAGUAcwB0AFIAdQBuAG4AZQByACkAIABJAG4AaQB0AGkAYQBsAGkAegBlACAA -KAApAAAAAAD//yEAKABUAGUAcwB0AFIAdQBuAG4AZQByACkAIABJAG4AaQB0AGkAYQBsAGkAegBl -ACAAKAApACwAIABsAGkAbgBlACAAAAANAAgAAAAAAPgKAAAFAPwKAAAAAKcM4rQYAAAAAADMADjI -eAgAAAAAAAAAAAQAAAB4BwAABAEGAAAAAAAYAQAAAAAAAAAAAAAAAAAACwAQAAAAAAA0AQAAAAAA -AAcAAACUAOAG4AbgBgAAAABQA1ADgAGAAUgGSAZYAkgEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA -lACUAAAAAAAAAAAASAbgBgAAGQAHABMAgAEAAFABAAA4AAAAAgAAACwBQAEAAAAAAAAAAAAAAAAA -AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEABQAEsASwBAAAAAAcAAAAMAAAAEAAAAAIA -AABgAXABAAAAAGABcAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA -AAMAAQBAAQAAUAEAAAAAAAAZABkABAACAAAAAAB8AQYAAAAAAJQBAAAAAAAAAAAAAAAAAAANAAgA -cAFwAVwBAABkABkADQAIAAAAAADYAgAAewAZAAgAAwBYAgAAfAIAADgAAAABAAAAGAIYAgAAAAAA -AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGAIYAgAAAAAAAAAACAAAAIIA -AAAQAAAAAgAAADgCSAIAAAAAOAJIAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA -AAAAAAAAAAAABAACAAAAAAB8AQYAAAAAABADAAAAAAAAAAAAAAAAAAANAAgASAJIAlwBAACUABkA -DQAIAAAAAADYAgAAowAZAAgAAwBQA0gERAMAADgAAAADAAAA8AIgA/AC8AIAAAAAAAAAAAAAAAAA -AAAAAAAAAAAAAAAAAAAAAAAAACADIAMAAAAAAAMAAwAAAAABAAAACgAAAKoAAAAUAAAAAgAAADAD -QAMAAAAAMANAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAB -AAADAABgAwYAAAAAAAQAAgAgAwAAfAEGAAAAAAB8AwAAAAAAAAAAAAAAAAAAAwACAAAAAAC0AwYA -EAAAAA0ACABAA0ADXAEAAOoAGQANAAgAAAAAANgCAAABARkABwADAEgEAADMAwAAOAAAAAMAAADo -AwgE+AP4AwAAAADoA+gDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIBAgEAAAAAAEA -AAAFAAAACAEAABAAAAACAAAAKAQ4BAAAAAAoBDgEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA -AAAAAAAAAAAAAAAAAAAAAAADAAEA+AMAAMwDAAAAAAAAAwABAAgEAABgAwYAAQAAAAQAAgAAAAAA -fAEGAAAAAABgBAAAAAAAAAAAAAAAAAAADQAIADgEOARcAQAANgEZAA0ACAAAAAAA2AIAAE0BGQAI -AAMASAYAALwCAAA4AAAAAgAAAOAEGAYAAAAAAAAAAAAAAAAYBhgGAAAAAAAAAAAAAAAAAAAAAAAA -AAAAAAAAAAAAAOAE4AQAAAAAAAAAAAkAAABUAQAAFAAAAAIAAAAoBjgGAAAAACgGOAYAAAAAAAAA -AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAgAYBgAAfAEGAAAAAACgBAAA -AAAAAAAAAAAAAAAAJgAEAPgPAAALAEAAzAgAAOwEAAAAAAAABQAAAGwF7ArIBcgFAAAAAAAAAADs -CuwKbAXYCgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADECsQKCAAAAAAAAABsBcgFAAAZACEA -CAWEEAAACABTAMgF2AokAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA -AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAGABkAIQAIBWARAAAIAFMAxAoAADAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAADAEgDAAAAAMACDQAkAEEAUwBTAEkAUwBUAEEAQwBUAEkATwBOAAAA +dAADAE4ARQBXAAAAiAAGAEQARQBMAEUAVABFAAAAAAAUAQoASQBOAEkAVABJAEEATABJAFoARQAA +AAAAkAAJAFQARQBSAE0ASQBOAEEAVABFAAAAMAEGAE8AQgBKAEUAQwBUAAAAAAB4AQAAAAAAAEwB +GQByAHUALgBsAGkAdgBlAHMAYwByAGkAcAB0AHMALgBkAHUAbgBpAHQALgBjAG8AcgBlAAAAAAEZ +AFIAVQAuAEwASQBWAEUAUwBDAFIASQBQAFQAUwAuAEQAVQBOAEkAVAAuAEMATwBSAEUAAABQAgYA +RABFAFMASQBHAE4AAAAAAAQCCgBUAGUAcwB0AFIAdQBuAG4AZQByAAAAAADMAQoAVABFAFMAVABS +AFUATgBOAEUAUgAAAAAAtAESAEEAQgBTAFQAUgBBAEMAVABUAEUAUwBUAFIAVQBOAE4ARQBSAAAA +AACEAgoARABPAFIAVQBOAFQARQBTAFQAUwAAAAAAFAIMAEUAUgBSAE8AUgBIAEEATgBEAEwARQBS +AAAAAAD//wgARgBVAE4AQwBOAEEATQBFAAAAAABkAhgAVABlAHMAdABSAHUAbgBuAGUAcgAuAEQA +bwBSAHUAbgBUAGUAcwB0AHMAIAAoACkAAAAAAHACBABFAE4ARABIAAAAAAAwAgoAVABFAFMAVABG +AEEASQBMAEUARAAAAAAAXAINAEkAbgBpAHQAaQBhAGwAaQB6AGUAIAAoACkAAACgAgMAUgBVAE4A +AAD8AgEAKAAAAP//AgApACAAAAAAAP//BwAsACAAbABpAG4AZQAgAAAA//8LACgAVABlAHMAdABS +AHUAbgBuAGUAcgAAAP//DQAoAFQAZQBzAHQAUgB1AG4AbgBlAHIAKQAgAAAA//8aACgAVABlAHMA +dABSAHUAbgBuAGUAcgApACAASQBuAGkAdABpAGEAbABpAHoAZQAgACgAKQAAAAAA//8hACgAVABl +AHMAdABSAHUAbgBuAGUAcgApACAASQBuAGkAdABpAGEAbABpAHoAZQAgACgAKQAsACAAbABpAG4A +ZQAgAAAABQDABQAAAAClAg0/GAAAAAAAzADoC7AKAAAAAAAAAAAEAAAAuAMAAAQBBgAAAAAAGAEA +AAAAAAAAAAAAAAAAACYABACwFgAACwBAAAAAAABQAQAAAAAAAAUAAACkAGgFAAEAAQAAAAAAAAAA +qASoBKQApAAEBQQFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAaAVoBQAAAAAAAAAApAAAAQAAGQAh +AEAADBcAAAgAUwAAAQAAJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEABgAZACEAQAB4HQAACABTAKgEAAAwAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA -AAAAAAAAAAMAAgAAAAAA2AQJBBAACAUNAAgAOAY4BlwBAACaARkADQAIAAAAAADYAgAAsQEZAAgA -EwDgBgAAJAAAADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA -AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALgBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA -AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAATAAAAAAAwAAAAOAAAAAAAAAAA +AAAAAAAAAAALABAAAAAAADQBAAAAAAAAAwAAAKwBIAMgAyADAAAAAAAAAACsAawBiAKIAgAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQACIAiADAAAZAAgAAwCIAgAAfAEAAFAB +AAABAAAASAJIAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAASAJI +AgAAAAAAAAAACAAAAAwAAAAQAAAAAgAAAGgCeAIAAAAAaAJ4AgAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGQAZAAQAAgAAAAAAuAEGAAAAAADQAQAAAAAAAAAAAAAA +AAAADQAIAHgCeAKYAQAAHgAZAA0ACAAAAAAACAIAAC0AGQAIABMAIAMAACQAAABQAQAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA -AAAAAAAAuQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA -AAAAAAAAAAAAAAAAAAAAAAAIAAAAOAoAAEQAAAAAAAAAAgAAABAIMAgwCDAIAAAAAAAAAAAAAAAA -AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAIEAgAAAAAAAAAAAkAAAC6AQAAFAAAAAIAAABA -CFAIAAAAAEAIUAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQA -AgAwCAAAfAEGAAAAAADEBQAAAAAAAAAAAAAAAAAAAwACAAAAAAA0AQkEEAA4AA0ACABQCFAIXAEA -AOIBGQANAAgAAAAAANgCAAD5ARkAIQAEAPASAAAHAGAAAAAAAOgDCQQAAAAAAAAAAAAAAAAAAAAA -AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAkEzAgG -AAkEzAgZACYABAAkCAAACwBAAAAAAADoAwAAAAAAAAQAAAAwCWAKiAmICQAAAAAAAAAAAAAAADAJ -MAkAAAAAAAAAAAAAAABgCmAK4AngCQAAAAAAAAAAAAAAAAQAAAAAAAAAMAmICQAAGQAhAMwIaAsA -AAgAUwCICQAAJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA -AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIQDMCAAMAAAIAFMA4AkAADAAAAAAAAAAAAAAAAAAAAAA -AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACEA -zAh4CQAACABTAGAKAAAEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA -AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAwAGAAYABgAZAAQAAAAAAAAAJAQGAAAAAACwBQAA -AAAAAAAAAAAAAAAAIQDMCHAKAAAHAFMAAAAAAAgFCQQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA -AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGAAkECAUGAAkECAUGABwA -CAVUEAAAAwBTANgKAABUBQEAHAAIBWQQAAADAFMA7AoAAIAFAQAcAAgFdBAAAAMAUwAAAAAAsAUB -AAQABAIAAAAAOgAAGg4A0pQAHQAAGikACwAAAAAJOkwAGiwAfbwBPwEaLQB9CAI/ARouAH0wAj8B -GjAAL4ABIxoyAH0wAj8BGjMAfZgCPwEaNAB9MAI/ARo2AC9IBCMaNwB9vAE/ARo5ADoXABo6ABo7 -ABR9ZAYVv48KAwZCk78Wv5sRGjwAGj0AHRpEAAsAAAAACToGABpJADoPABpKABpLAC9YAhYjGkwA -DRpNABpOAB0aVQALAAAAAAk6NAAaWgBeIAMvUAMWI5ulGlsAKWgIIyzgCV4gA32wBSMaXABKIAN9 -VAS/fbAFvz8BGl4AOhcAGl8AGmAAFH0EBxW/jwoDBkKTvxa/mxEaYQAaYgAdGmkACwAAAAAJOiIA -GmwAXegDSfgDfZgEkAAAgAamffACkAAAgAanpRpuADoXABpvABpwABR9uAcVv48KAwZCk78Wv5sR -GnEAGnIAHRp5AAsAAAAACTo6ABp+AF4YBiloCCMsYAojphqAAH0gBUsYBk3ECr99ZAW/SxgGTdgK -v32UBb9LGAZN7Aq/PwEaggA6FwAagwAahAAUfWwIFb+PCgMGQpO/Fr+bERqFABqGAB0dHRqLAAsA -AAAACTocABqOAF4wCCo4ACOmGpAASzAILJQAIzEakgA6FwAakwAalAAUfQgJFb+PCgMGQpO/Fr+b -ERqVABqWAB0CAAAAEQAUAAAAAAD//wEAAwAXAAAAGwBEAIkACgAAAA== +AAgAAAA0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAgAEwAAAAAAMAAAAFABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAAADkAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAA +AAAAAABEAAAAAAAAAAIAAABQBHAEcARwBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAABQBFAEAAAAAAAAAAAJAAAAPgAAABQAAAACAAAAgASQBAAAAACABJAEAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAIAcAQAALgBBgAAAAAANAIAAAAA +AAAAAAAAAAAAAAMAAgAAAAAANAEJBBAAUAENAAgAkASQBJgBAABmABkADQAIAAAAAAAIAgAAfQAZ +ACEAQACoGQAACABDAAQFAAB8AQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAGABkAIQBAAIAaAAAIAEMAaAUAABgCAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAQAFAAYABgAGAAAAAAAZACEAQADAGAAABwBTAAAAAABUAgAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAYA +BACIAAAAAAA6AAAaDgDSlAAdAAAaKAALAAAAAAk6BgAaLQA6DwAaLgAaLwAvBAUWIxowAA0aMQAa +MgAdMKQAIx0wAAEjHRo3AAsAAAAACTocABo6AF5wBCpQASOmGjwAS3AELGgFIzEaPgA6FwAaPwAa +QAAUfQADFb+PCgMGQpO/Fr+bERpBABpCAB0CAAAAEQAUAAAAAAD//wEAAwAXAAAAGwBEADUACgAA +AA== -20171111T000748,13+03 +20171114T115058,58+03 diff --git a/ODP/Code/ScriptLibraries/ru.livescripts.dunit.core.lss b/ODP/Code/ScriptLibraries/ru.livescripts.dunit.core.lss index 6207490..0f788c1 100644 --- a/ODP/Code/ScriptLibraries/ru.livescripts.dunit.core.lss +++ b/ODP/Code/ScriptLibraries/ru.livescripts.dunit.core.lss @@ -13,8 +13,25 @@ Option Declare %REM ---=== Change Log ===--- - --- Version: X.X.X; DD.MM.YYYY; Name - 1. + --- Version: 1.1.0; 12.11.2017; Artem Areshko + 1. Added consts + LS_TEST_ERROR_MATCHER_PARAM + LS_TEST_ERROR_OTHER + + 2. Renamed methods for Assert class + AssertTrue -> True + AssertFalse -> False + AssertEquals -> Equals + + 3. Added methods + Assert.NotNothing() + TestContext.InitLog() + TextContext.Log() + TextContext.CloseLog() + + 4. Deleted method Assert.AssertError() + + 5. Added class AbstractTestRunner %END REM @@ -24,6 +41,7 @@ Declare Class IMatcher Declare Public Class TestContext Declare Class AbstractTest Declare Class TestResult +Declare Class AbstractTestRunner Declare Static Function Assert() As Assert Declare Static Function TestContext() As TestContext @@ -31,6 +49,8 @@ Declare Static Function TestContext() As TestContext Private Const DESIGN = "ru.livescripts.dunit.core" Public Const LS_TEST_ERROR_ASSERT_FAIL = 3999 +Public Const LS_TEST_ERROR_MATCHER_PARAM = 3998 +Public Const LS_TEST_ERROR_OTHER = 3997 Public Const LS_TEST_STATUS_NOT_RUNNED = "Not runned" Public Const LS_TEST_STATUS_OK = "OK" @@ -38,35 +58,36 @@ Public Const LS_TEST_STATUS_FAILED = "FAILED" Private Const LS_TEST_ERRORMSG_ASSERT_FAIL = "Assert failed: " + '*** Assert *** %REM Description: %END REM Class Assert - 'AssertTrue + 'True %REM Description: %END REM - Public Sub AssertTrue(actual As Boolean) - If Not actual Then Call Me.Throwerror("AssertTrue") + Public Sub True(actual As Boolean) + If Not actual Then Call Me.Throwerror("True") End Sub - 'AssertFalse + 'False %REM Description: %END REM - Public Sub AssertFalse(actual As Boolean) - If actual Then Call Me.Throwerror("AssertFalse") + Public Sub False(actual As Boolean) + If actual Then Call Me.Throwerror("False") End Sub - 'AssertEquals + 'Equals %REM Description: %END REM - Public Sub AssertEquals(matcher As IMatcher) + Public Sub Equals(matcher As IMatcher) On Error GoTo ErrorHandler - Const FuncName = "Assert.AssertEquals ()" + Const FuncName = "Assert.Equals ()" If Not Matcher.Matches() Then Call Me.Throwerror(funcName) @@ -76,12 +97,23 @@ ErrorHandler: endh: End Sub - 'AssertError + 'NotNothing %REM Description: %END REM - Public Sub AssertError(expected As Integer, actual As Variant) - If expected <> actual Then Call Me.Throwerror("AssertError") + Public Sub NotNothing(actual As Variant) + On Error GoTo ErrorHandler + Const FuncName = "Assert.NotNothing ()" + + If Not IsObject(actual) Then + Error LS_TEST_ERROR_OTHER, {actual is not an object} + End If + If actual Is Nothing Then Call Me.Throwerror("NotNothing") + + GoTo endh +ErrorHandler: + Error Err, "(" & DESIGN & ") " & FuncName & ", line " & Erl & Chr(10) & Error$ +endh: End Sub 'ThrowError @@ -115,6 +147,10 @@ Public Class TestContext Private tests List As String + Private stream As NotesStream + Private logFolder As String + Private logFileName As String + 'Add %REM Description: @@ -153,7 +189,7 @@ endh: %END REM Public Function GetResult() As TestResult On Error GoTo ErrorHandler - Const FuncName = "SetTestStatus.GetResult ()" + Const FuncName = "TestContext.GetResult ()" Dim result As New TestResult() @@ -174,6 +210,63 @@ ErrorHandler: Error Err, "(" & DESIGN & ") " & FuncName & ", line " & Erl & Chr(10) & Error$ endh: End Function + + 'InitLog + %REM + Description: + %END REM + Public Sub InitLog(logFolder As String) + On Error GoTo ErrorHandler + Const FuncName = "TestContext.InitLog ()" + + Dim session As New NotesSession + Set stream = session.Createstream() + + Me.logFolder = logFolder + If Me.logFolder = "" Then + Me.logFolder = Environ("TEMP") + End If + logFileName = Me.logFolder & "\" & Format(Now, "yyyy_mm_dd hh_mm_ss") & ".txt" + Call stream.Open(logFileName, "UTF-8") + + GoTo endh +ErrorHandler: + Error Err, "(" & DESIGN & ") " & FuncName & ", line " & Erl & Chr(10) & Error$ +endh: + End Sub + + 'CloseLog + %REM + Description: + %END REM + Public Sub CloseLog() + On Error GoTo ErrorHandler + Const FuncName = "TestContext.CloseLog ()" + + Call stream.Close() + Print "Test detials saved to: " & logFileName + + GoTo endh +ErrorHandler: + Error Err, "(" & DESIGN & ") " & FuncName & ", line " & Erl & Chr(10) & Error$ +endh: + End Sub + + 'Log + %REM + Description: + %END REM + Public Sub Log(message As String) + On Error GoTo ErrorHandler + Const FuncName = "TestContext.Log ()" + + Call stream.Writetext(message, EOL_PLATFORM) + + GoTo endh +ErrorHandler: + Error Err, "(" & DESIGN & ") " & FuncName & ", line " & Erl & Chr(10) & Error$ +endh: + End Sub End Class '*** AbstractTest *** @@ -206,8 +299,8 @@ endh: On Error GoTo ErrorHandler Const FuncName = "AbstractTest.EndTest ()" - Call TestContext().SetTestStatus(Testname, LS_TEST_STATUS_OK) - Print testName & ": " & LS_TEST_STATUS_OK + Call TestContext.SetTestStatus(Testname, LS_TEST_STATUS_OK) + Call TestContext.Log(testName & ": " & LS_TEST_STATUS_OK) GoTo endh ErrorHandler: @@ -244,6 +337,154 @@ ErrorHandler: endh: End Sub +End Class +'*** AbstractTestRunner *** +%REM + Description: +%END REM +Class AbstractTestRunner + + 'New + %REM + Description: + %END REM + Public Sub New() + On Error GoTo ErrorHandler + Const FuncName = "AbstractTestRunner.New ()" + + Call Me.Initialize() + + GoTo endh +ErrorHandler: + Error Err, "(" & DESIGN & ") " & FuncName & ", line " & Erl & Chr(10) & Error$ +endh: + End Sub + + 'Initialize + %REM + Description: + %END REM + Private Sub Initialize() + On Error GoTo ErrorHandler + Const FuncName = "AbstractTestRunner.Initialize ()" + + Call TestContext.Initlog("") + + GoTo endh +ErrorHandler: + Error Err, "(" & DESIGN & ") " & FuncName & ", line " & Erl & Chr(10) & Error$ +endh: + End Sub + + 'Run + %REM + Description: + %END REM + Public Function Run() + On Error GoTo ErrorHandler + Const FuncName = "AbstractTestRunner.Run ()" + + Call TestContext.Log("Started running tests at " & Now) + Call TestContext.Log("----------------------------------") + + Call Me.DoRunTests() + + Call TestContext.Log("----------------------------------") + Call TestContext.Log("Finished tests at " & Now) + Call TestContext.Log("----------------------------------") + + Call Me.PrintResult() + + GoTo endh +ErrorHandler: + Error Err, "(" & DESIGN & ") " & FuncName & ", line " & Erl & Chr(10) & Error$ +endh: + End Function + + 'RunTests + %REM + Description: + %END REM + Private Sub DoRunTests() + On Error GoTo ErrorHandler + Const FuncName = "AbstractTestRunner.RunTests ()" + + 'Override + + GoTo endh +ErrorHandler: + Call Me.TestFailed(Error$) + Resume Next +endh: + End Sub + + 'TestFailed + %REM + Description: + %END REM + Private Sub TestFailed(stackTraceString As String) + On Error GoTo ErrorHandler + Const FuncName = "AbstractTestRunner.TestFailed ()" + + Dim testName As String + + testName = Me.GetTestName(Error$) + Call TestContext.SetTestStatus(testName, LS_TEST_STATUS_FAILED) + Call TestContext.Log(testName & ": " & LS_TEST_STATUS_FAILED) + + Dim stackTrace As Variant + stackTrace = Split(stackTraceString, Chr(10)) + ForAll elem In stackTrace + Print elem + End ForAll + + GoTo endh +ErrorHandler: + Error Err, "(" & DESIGN & ") " & FuncName & ", line " & Erl & Chr(10) & Error$ +endh: + End Sub + + 'GetTestName + %REM + Description: + %END REM + Private Function GetTestName(errorString As String) + On Error GoTo ErrorHandler + Const FuncName = "AbstractTestRunner.GetTestName ()" + + GetTestName = StrRight(StrLeft(errorString$, ","), ") ") + + GoTo endh +ErrorHandler: + Error Err, "(" & DESIGN & ") " & FuncName & ", line " & Erl & Chr(10) & Error$ +endh: + End Function + + 'PrintResult + %REM + Description: + %END REM + Private Sub PrintResult() + On Error GoTo ErrorHandler + Const FuncName = "AbstractTestRunner.PrintResult ()" + + Dim result As TestResult + + Set result = TestContext.GetResult() + + Dim summary As String + summary = "Tests summary. Total: " & result.Total & "; Success: " & _ + result.Success & "; Failed: " & result.Failed + + Call TestContext.Log(summary) + Print summary + + GoTo endh +ErrorHandler: + Error Err, "(" & DESIGN & ") " & FuncName & ", line " & Erl & Chr(10) & Error$ +endh: + End Sub + End Class '++LotusScript Development Environment:2:1:Assert:5:8 'Assert @@ -291,3 +532,10 @@ ErrorHandler: endh: End Function + + + + + + + diff --git a/ODP/Code/ScriptLibraries/ru.livescripts.dunit.core.lss.metadata b/ODP/Code/ScriptLibraries/ru.livescripts.dunit.core.lss.metadata index c9fc237..980b832 100644 --- a/ODP/Code/ScriptLibraries/ru.livescripts.dunit.core.lss.metadata +++ b/ODP/Code/ScriptLibraries/ru.livescripts.dunit.core.lss.metadata @@ -1,16 +1,16 @@ - -20171013T123811,76+03 -20171111T000748,11+03 -20171111T000748,10+03 -20171111T000748,11+03 -20171111T000240,60+03 + +20171112T145059,52+03 +20171114T115058,42+03 +20171114T115058,41+03 +20171114T115058,42+03 +20171112T145059,58+03 CN=Artem A Areshko/O=LiveScripts/C=RU CN=Artem A Areshko/O=LiveScripts/C=RU -s34Q 1 ru.livescripts.dunit.core 8.5.3 -1.0.0 +s34Q +1.1.0 \ No newline at end of file diff --git a/ODP/Code/ScriptLibraries/ru.livescripts.dunit.demo.lss b/ODP/Code/ScriptLibraries/ru.livescripts.dunit.demo.lss new file mode 100644 index 0000000..5937c9e --- /dev/null +++ b/ODP/Code/ScriptLibraries/ru.livescripts.dunit.demo.lss @@ -0,0 +1,84 @@ +'++LotusScript Development Environment:2:5:(Options):0:74 +%REM + ru.livescripts.dunit.demo + + Created: Nov 13, 2017 + Author Artem A Areshko/LiveScripts/RU (Live-Scripts) + + Description: +%END REM + +Option Public +Option Declare + +%Include "lsconst.lss" + +Use "ru.livescripts.dunit.matchers" + +%REM + ---=== Change Log ===--- + --- Version: X.X.X; DD.MM.YYYY; Name + 1. + +%END REM + +'++LotusScript Development Environment:2:5:(Forward):0:1 +Declare Class DemoTest As AbstractTest + +'++LotusScript Development Environment:2:5:(Declarations):0:10 +Private Const DESIGN = "ru.livescripts.dunit.demo" + +'*** DemoTest *** +%REM + Description: +%END REM +Class DemoTest As AbstractTest + + 'AssertTest + %REM + Description: + %END REM + Public Sub TestAssertExample() + On Error GoTo ErrorHandler + Const FuncName = "DemoTest.TestAssertExample ()" + + Call Me.BeginTest(funcName) + + Call Assert.True(1 = 1) + + Dim simpleValueMatcher As New SimpleValueMatcher(1, 1) + Call Assert.Equals(simpleValueMatcher) + + Call Me.EndTest(funcName) + + GoTo endh +ErrorHandler: + Error Err, "(" & DESIGN & ") " & FuncName & ", line " & Erl & Chr(10) & Error$ +endh: + End Sub + + 'TestAssertErrorExample + %REM + Description: + %END REM + Public Sub TestAssertErrorExample() + On Error GoTo ErrorHandler + Const FuncName = "DemoTest.TestAssertErrorExample ()" + + Call Me.BeginTest(funcName) + + Const TEST_ERROR_CODE = 5000 + + On Error TEST_ERROR_CODE GoTo AssertErrorHandler + Error TEST_ERROR_CODE, "Test assert error" + + GoTo endh +AssertErrorHandler: + Call Me.EndTest(funcName) + Resume endh +ErrorHandler: + Error Err, "(" & DESIGN & ") " & FuncName & ", line " & Erl & Chr(10) & Error$ +endh: + End Sub + +End Class \ No newline at end of file diff --git a/ODP/Code/ScriptLibraries/ru.livescripts.dunit.demo.lss.metadata b/ODP/Code/ScriptLibraries/ru.livescripts.dunit.demo.lss.metadata new file mode 100644 index 0000000..aeddd83 --- /dev/null +++ b/ODP/Code/ScriptLibraries/ru.livescripts.dunit.demo.lss.metadata @@ -0,0 +1,15 @@ + + +20171113T091624,22+03 +20171114T115058,56+03 +20171114T115058,55+03 +20171114T115058,56+03 +20171113T091624,37+03 +CN=Artem A Areshko/O=LiveScripts/C=RU +CN=Artem A Areshko/O=LiveScripts/C=RU +ru.livescripts.dunit.demo +s34Q +1 +8.5.3 + + \ No newline at end of file diff --git a/ODP/Code/ScriptLibraries/ru.livescripts.dunit.matchers.lss b/ODP/Code/ScriptLibraries/ru.livescripts.dunit.matchers.lss index 1aa45be..bed96a8 100644 --- a/ODP/Code/ScriptLibraries/ru.livescripts.dunit.matchers.lss +++ b/ODP/Code/ScriptLibraries/ru.livescripts.dunit.matchers.lss @@ -15,18 +15,26 @@ Use "ru.livescripts.dunit.core" %REM ---=== Change Log ===--- - --- Version: X.X.X; DD.MM.YYYY; Name - 1. + --- Version: 1.1.0; 12.11.2017; Artem Areshko + 1. Added classes + DatabaseMatcher + DocumentMatcher + + 2. Modified DocumentItemsMatcher.New() + Added params validation %END REM '++LotusScript Development Environment:2:5:(Forward):0:1 Declare Class SimpleValueMatcher As IMatcher Declare Class DocumentItemsMatcher As IMatcher +Declare Class DatabaseMatcher As IMatcher +Declare Class DocumentMatcher As IMatcher '++LotusScript Development Environment:2:5:(Declarations):0:10 Private Const DESIGN = "ru.livescripts.dunit.matchers" + '*** SimpleValueMatcher *** %REM Description: @@ -89,6 +97,10 @@ Class DocumentItemsMatcher As IMatcher On Error GoTo ErrorHandler Const FuncName = "DocumentItemsMatcher.New ()" + If doc1 Is Nothing Then Error LS_TEST_ERROR_MATCHER_PARAM, {doc1 is Nothing} + If doc2 Is Nothing Then Error LS_TEST_ERROR_MATCHER_PARAM, {doc2 is Nothing} + If Not IsArray(itemNames) Then Error LS_TEST_ERROR_MATCHER_PARAM, {itemNames must be an array} + Set Me.doc1 = doc1 Set Me.doc2 = doc2 Me.itemNames = itemNames @@ -145,4 +157,133 @@ ErrorHandler: endh: End Function +End Class +'*** DatabaseMatcher *** +%REM + Description: +%END REM +Class DatabaseMatcher As IMatcher + + Private db1 As NotesDatabase + Private db2 As NotesDatabase + + 'New + %REM + Description: + %END REM + Public Sub New(db1 As NotesDatabase, db2 As NotesDatabase) + On Error GoTo ErrorHandler + Const FuncName = "DatabaseMatcher.New ()" + + If db1 Is Nothing Then Error LS_TEST_ERROR_MATCHER_PARAM, {db1 is Nothing} + If db2 Is Nothing Then Error LS_TEST_ERROR_MATCHER_PARAM, {db2 is Nothing} + + Set Me.db1 = db1 + Set Me.db2 = db2 + + GoTo endh +ErrorHandler: + Error Err, "(" & DESIGN & ") " & FuncName & ", line " & Erl & Chr(10) & Error$ +endh: + End Sub + + 'Matches + %REM + Description: + %END REM + Public Function Matches() As Boolean + On Error GoTo ErrorHandler + Const FuncName = "DatabaseMatcher.Matches ()" + + If db1.Replicaid <> db2.Replicaid Or _ + db1.Filepath <> db2.Filepath Or _ + db1.Title <> db2.Title Then GoTo endh + + Matches = True + + GoTo endh +ErrorHandler: + Error Err, "(" & DESIGN & ") " & FuncName & ", line " & Erl & Chr(10) & Error$ +endh: + End Function + +End Class +'*** DocumentMatcher *** +%REM + Description: +%END REM +Class DocumentMatcher As IMatcher + + Private doc1 As NotesDocument + Private doc2 As NotesDocument + + 'New + %REM + Description: + %END REM + Public Sub New(doc1 As NotesDocument, doc2 As NotesDocument) + On Error GoTo ErrorHandler + Const FuncName = "DocumentMatcher.New ()" + + If doc1 Is Nothing Then Error LS_TEST_ERROR_MATCHER_PARAM, {doc1 is Nothing} + If doc2 Is Nothing Then Error LS_TEST_ERROR_MATCHER_PARAM, {doc2 is Nothing} + + Set Me.doc1 = doc1 + Set Me.doc2 = doc2 + + GoTo endh +ErrorHandler: + Error Err, "(" & DESIGN & ") " & FuncName & ", line " & Erl & Chr(10) & Error$ +endh: + End Sub + + 'Matches + %REM + Description: + %END REM + Public Function Matches() As Boolean + On Error GoTo ErrorHandler + Const FuncName = "DocumentMatcher.Matches ()" + + If doc1.Universalid <> doc2.Universalid Then GoTo endh + + Dim dbMatcher As New DatabaseMatcher(doc1.Parentdatabase, doc2.Parentdatabase) + If Not dbMatcher.Matches() Then GoTo endh + + Dim items1 As Variant + Dim items2 As Variant + + items1 = doc1.Items + items2 = doc2.Items + + If (IsArray(items1) And Not IsArray(items2)) Or _ + (Not IsArray(items2) And IsArray(items2)) Then GoTo endh + + If IsArray(items1) And IsArray(items2) Then + If UBound(items1) <> UBound(items2) Then GoTo endh + + Dim i% + Dim itemsList1 List As Boolean + For i = 0 To UBound(items1) + itemsList1(items1(i).Name) = False + Next + + Dim itemNames2() As String + ReDim itemNames2 (0 To UBound(items2)) + For i = 0 To UBound(items2) + If Not IsElement(itemsList1(items2(i).Name)) Then GoTo endh + itemNames2(i) = items2(i).Name + Next + Dim docItemsMatcher As New DocumentItemsMatcher(doc1, doc2, itemNames2) + If Not docItemsMatcher.Matches() Then GoTo endh + End If + + Matches = True + + GoTo endh +ErrorHandler: + Error Err, "(" & DESIGN & ") " & FuncName & ", line " & Erl & Chr(10) & Error$ +endh: + End Function + End Class \ No newline at end of file diff --git a/ODP/Code/ScriptLibraries/ru.livescripts.dunit.matchers.lss.metadata b/ODP/Code/ScriptLibraries/ru.livescripts.dunit.matchers.lss.metadata index cce7ba8..90fb3b4 100644 --- a/ODP/Code/ScriptLibraries/ru.livescripts.dunit.matchers.lss.metadata +++ b/ODP/Code/ScriptLibraries/ru.livescripts.dunit.matchers.lss.metadata @@ -1,9 +1,9 @@ - + 20171013T124409,08+03 -20171111T000748,13+03 -20171111T000748,12+03 -20171111T000748,13+03 +20171114T115058,53+03 +20171114T115058,52+03 +20171114T115058,53+03 20171111T000240,64+03 CN=Artem A Areshko/O=LiveScripts/C=RU CN=Artem A Areshko/O=LiveScripts/C=RU @@ -11,6 +11,6 @@ 1 ru.livescripts.dunit.matchers 8.5.3 -1.0.0 +1.1.0 \ No newline at end of file diff --git a/ODP/Views/(untitled).view b/ODP/Views/(untitled).view index 9bf3f17..8485bb7 100644 --- a/ODP/Views/(untitled).view +++ b/ODP/Views/(untitled).view @@ -1,11 +1,11 @@ - + 20171013T123657,10+03 -20171111T000748,17+03 -20171111T000748,16+03 -20171111T000748,17+03 +20171114T115058,62+03 +20171114T115058,61+03 +20171114T115058,62+03 20171111T000240,19+03 CN=Artem A Areshko/O=LiveScripts/C=RU CN=Artem A Areshko/O=LiveScripts/C=RU