diff --git a/lab3/main_test.js b/lab3/main_test.js index e6d6414..71bea32 100644 --- a/lab3/main_test.js +++ b/lab3/main_test.js @@ -3,3 +3,57 @@ const assert = require('assert'); const { Calculator } = require('./main'); // TODO: write your tests here +it('Param-Error', () => { + const exp_testcases = [ + {param: NaN, expected: {name: 'Error', message: 'unsupported operand type'}}, + {param: 9999999, expected: {name: 'Error', message: 'overflow'}} + ]; + + const Calc = new Calculator(); + + for( const ts of exp_testcases){ + assert.throws(() => { + Calc.exp(ts.param); + }, ts.expected + ); + }; + + const log_testcases = [ + {param: NaN, expected: {name: 'Error', message: 'unsupported operand type'}}, + {param: 0, expected: {name: 'Error', message: 'math domain error (1)'}}, + {param: -1, expected: {name: 'Error', message: 'math domain error (2)'}} + ]; + + for( const ts of log_testcases){ + assert.throws(() => { + Calc.log(ts.param); + }, ts.expected + ); + }; + +}) + +it('test', () => { + const exp_testcases = [ + {param: 0, expected: 1}, + {param: 1, expected: Math.exp(1)}, + {param: -1, expected: Math.exp(-1)} + ]; + + const Calc = new Calculator(); + + for( const ts of exp_testcases){ + assert.strictEqual(Calc.exp(ts.param), ts.expected); + }; + + const log_testcases = [ + {param: 9, expected: Math.log(9)}, + {param: 1, expected: Math.log(1)}, + {param: 100, expected: Math.log(100)} + ]; + + for( const ts of log_testcases){ + assert.strictEqual(Calc.log(ts.param), ts.expected); + }; + +}) diff --git a/lab5/antiasan.c b/lab5/antiasan.c index 8a8936d..ac479d7 100644 --- a/lab5/antiasan.c +++ b/lab5/antiasan.c @@ -2,5 +2,9 @@ void antiasan(unsigned long addr) { + unsigned long shadow_addr = ((addr + 0x87 ) >> 3) + 0x7fff8000; + for (int i = 0; i < 4; i += 1) { + *(unsigned int *)(shadow_addr + i * 4) = 0; + } }