/** * Verify that calculated hash doesn't depend on message alignment. */ static void test_alignment(void) { int i, start, hash_id, alignment_size; /* loop by sums */ for(i = 0, hash_id = 1; (hash_id & RHASH_ALL_HASHES); hash_id <<= 1, i++) { char expected_hash[130]; assert(rhash_get_digest_size(hash_id) < (int)sizeof(expected_hash)); alignment_size = (hash_id & (RHASH_TTH | RHASH_TIGER | RHASH_WHIRLPOOL | RHASH_SHA512) ? 8 : 4); /* start message with different alignment */ for(start = 0; start < alignment_size; start++) { char message[30]; int j, msg_length = 11 + alignment_size; /* fill the buffer fifth shifted letter sequence */ for(j = 0; j < msg_length; j++) message[start + j] = 'a' + j; message[start + j] = 0; if(start == 0) { /* save original hash value */ strcpy(expected_hash, hash_message(hash_id, message + start, 0)); } else { /* verify obtained hash value */ assert_hash(hash_id, message + start, expected_hash, 0); } } } }
static VALUE initialize_params(VALUE vparams, VALUE parser, VALUE lexer, VALUE lexmid) { struct cparse_params *v; Data_Get_Struct(vparams, struct cparse_params, v); v->value_v = vparams; v->parser = parser; v->lexer = lexer; if (! NIL_P(lexmid)) v->lexmid = value_to_id(lexmid); v->debug = RTEST(rb_ivar_get(parser, id_yydebug)); Check_Type(arg, T_ARRAY); if (!(13 <= RARRAY_LEN(arg) && RARRAY_LEN(arg) <= 14)) rb_raise(RaccBug, "[Racc Bug] wrong arg.size %ld", RARRAY_LEN(arg)); v->action_table = assert_array (rb_ary_entry(arg, 0)); v->action_check = assert_array (rb_ary_entry(arg, 1)); v->action_default = assert_array (rb_ary_entry(arg, 2)); v->action_pointer = assert_array (rb_ary_entry(arg, 3)); v->goto_table = assert_array (rb_ary_entry(arg, 4)); v->goto_check = assert_array (rb_ary_entry(arg, 5)); v->goto_default = assert_array (rb_ary_entry(arg, 6)); v->goto_pointer = assert_array (rb_ary_entry(arg, 7)); v->nt_base = assert_integer(rb_ary_entry(arg, 8)); v->reduce_table = assert_array (rb_ary_entry(arg, 9)); v->token_table = assert_hash (rb_ary_entry(arg, 10)); v->shift_n = assert_integer(rb_ary_entry(arg, 11)); v->reduce_n = assert_integer(rb_ary_entry(arg, 12)); if (RARRAY_LEN(arg) > 13) { v->use_result_var = RTEST(rb_ary_entry(arg, 13)); } else { v->use_result_var = Qtrue; } v->use_result_var = NUM2INT(rb_ivar_get(parser, id_use_result)); /* if (RARRAY_LEN(arg) > 13) { */ /* v->use_result_var = RTEST(RARRAY_PTR(arg)[13]); */ /* } */ /* else { */ /* v->use_result_var = Qtrue; */ /* } */ PUSH(v->state, INT2FIX(0)); rb_ivar_set(parser, id_errstatus, LONG2NUM(v->errstatus)); rb_iv_set(parser, "@vstack", v->vstack); if (v->debug) { rb_iv_set(parser, "@tstack", v->tstack); } else { rb_iv_set(parser, "@tstack", Qnil); } return vparams; }
EAssertResult CBatchTestEventHandler::OnAssert( const char * expression, const char * file, unsigned int line, const char * formatted_msg ) { u32 assert_hash( murmur2_hash( (const u8 *)file, strlen( file ), line ) ); std::vector<u32>::iterator it( std::lower_bound( mAsserts.begin(), mAsserts.end(), assert_hash ) ); if( it == mAsserts.end() || *it != assert_hash ) { if( gRomLogFH ) { fprintf( gRomLogFH, "! Assert Failed: Location: %s(%d), [%s] %s\n", file, line, expression, formatted_msg ); } mAsserts.insert( it, assert_hash ); } // Don't return AR_IGNORE as this prevents asserts firing for subsequent roms return AR_IGNORE_ONCE; }
/** * Test a hash algorithm on array of known short messages. * * @param hash_id id of the algorithm to test * @param ptr pointer to array of pairs <message,expected-hash> * @param set_filename need to set a filename for BTIH hash */ static void test_known_strings_pairs(unsigned hash_id, const char** ptr, int set_filename) { for(; ptr[0] && ptr[1]; ptr += 2) { assert_hash(hash_id, ptr[0], ptr[1], set_filename); } }
static VALUE initialize_params(VALUE vparams, VALUE parser, VALUE arg, VALUE lexer, VALUE lexmid) { struct cparse_params *v; Data_Get_Struct(vparams, struct cparse_params, v); v->value_v = vparams; v->parser = parser; v->lexer = lexer; if (! NIL_P(lexmid)) v->lexmid = value_to_id(lexmid); v->debug = RTEST(rb_ivar_get(parser, id_yydebug)); Check_Type(arg, T_ARRAY); if (!(13 <= RARRAY_LEN(arg) && RARRAY_LEN(arg) <= 14)) rb_raise(RaccBug, "[Racc Bug] wrong arg.size %ld", RARRAY_LEN(arg)); v->action_table = assert_array (RARRAY_PTR(arg)[ 0]); v->action_check = assert_array (RARRAY_PTR(arg)[ 1]); v->action_default = assert_array (RARRAY_PTR(arg)[ 2]); v->action_pointer = assert_array (RARRAY_PTR(arg)[ 3]); v->goto_table = assert_array (RARRAY_PTR(arg)[ 4]); v->goto_check = assert_array (RARRAY_PTR(arg)[ 5]); v->goto_default = assert_array (RARRAY_PTR(arg)[ 6]); v->goto_pointer = assert_array (RARRAY_PTR(arg)[ 7]); v->nt_base = assert_integer(RARRAY_PTR(arg)[ 8]); v->reduce_table = assert_array (RARRAY_PTR(arg)[ 9]); v->token_table = assert_hash (RARRAY_PTR(arg)[10]); v->shift_n = assert_integer(RARRAY_PTR(arg)[11]); v->reduce_n = assert_integer(RARRAY_PTR(arg)[12]); if (RARRAY_LEN(arg) > 13) { v->use_result_var = RTEST(RARRAY_PTR(arg)[13]); } else { v->use_result_var = Qtrue; } v->tstack = v->debug ? NEW_STACK() : Qnil; v->vstack = NEW_STACK(); v->state = NEW_STACK(); v->curstate = 0; PUSH(v->state, INT2FIX(0)); v->t = INT2FIX(FINAL_TOKEN + 1); /* must not init to FINAL_TOKEN */ v->nerr = 0; v->errstatus = 0; rb_ivar_set(parser, id_errstatus, LONG2NUM(v->errstatus)); v->retval = Qnil; v->fin = 0; v->lex_is_iterator = Qfalse; rb_iv_set(parser, "@vstack", v->vstack); if (v->debug) { rb_iv_set(parser, "@tstack", v->tstack); } else { rb_iv_set(parser, "@tstack", Qnil); } return vparams; }