<commit_before>import test from 'ava' ;
import { parse , _zeros , _idivmod , _divmod , stringify } from '../../../src' ;

function test_idivmod ( t , dividend , divisor , quotient , remainder ) {

	const B = 10 ;

	const D = parse( 10 , B , dividend ) ;
	const d = parse( 10 , B , divisor ) ;
	const q = _zeros( D.length ) ;

	_idivmod( B , D , 0 , D.length , d , 0 , d.length , q , 0 , q.length ) ;

	t.is( divisor , stringify( B , 10 , d , 0 , d.length ) ) ;

	t.is(
		quotient , stringify( B , 10 , q , 0 , q.length ) ,
		dividend + ' / ' + divisor + ' = ' + quotient
	) ;

	t.is(
		remainder , stringify( B , 10 , D , 0 , D.length ) ,
		dividend + ' % ' + divisor + ' = ' + remainder
	) ;

}

function test_divmod ( t , dividend , divisor , quotient , remainder ) {

	const B = 10 ;

	const D = parse( 10 , B , dividend ) ;
	const d = parse( 10 , B , divisor ) ;
	const q = _zeros( D.length ) ;
	const R = _zeros( D.length ) ;

	_divmod( B , D , 0 , D.length , d , 0 , d.length , q , 0 , q.length , R , 0 , R.length ) ;

	t.is( dividend , stringify( B , 10 , D , 0 , D.length ) ) ;
	t.is( divisor , stringify( B , 10 , d , 0 , d.length ) ) ;

	t.is(
		quotient , stringify( B , 10 , q , 0 , q.length ) ,
		dividend + ' / ' + divisor + ' = ' + quotient
	) ;

	t.is(
		remainder , stringify( B , 10 , R , 0 , R.length ) ,
		dividend + ' % ' + divisor + ' = ' + remainder
	) ;

}

function macro ( ...args ) {
	test_idivmod( ...args ) ;
	test_divmod( ...args ) ;
}

macro.title = ( title , D , d , q , r ) => `${title} ${D} / ${d} = ${q} % ${r}`.trim()


test( macro , '7' , '10' , '0' , '7' ) ;
test( macro , '10' , '7' , '1' , '3' ) ;
test( macro , '7' , '7' , '1' , '0' ) ;
test( macro , '4' , '2' , '2' , '0' ) ;
test( macro , '15' , '3' , '5' , '0' ) ;
test( macro , '16' , '3' , '5' , '1' ) ;

test( macro , '89' , '7' , '12' , '5' ) ;
test( macro , '789' , '77' , '10' , '19' ) ;

test( macro , '120' , '39' , '3' , '3' ) ;<commit_msg>:mag: test(idivmod): Fix bad test title.<commit_after>import test from 'ava' ;
import { parse , _zeros , _idivmod , _divmod , stringify } from '../../../src' ;

function test_idivmod ( t , dividend , divisor , quotient , remainder ) {

	const B = 10 ;

	const D = parse( 10 , B , dividend ) ;
	const d = parse( 10 , B , divisor ) ;
	const q = _zeros( D.length ) ;

	_idivmod( B , D , 0 , D.length , d , 0 , d.length , q , 0 , q.length ) ;

	t.is( divisor , stringify( B , 10 , d , 0 , d.length ) ) ;

	t.is(
		quotient , stringify( B , 10 , q , 0 , q.length ) ,
		dividend + ' / ' + divisor + ' = ' + quotient
	) ;

	t.is(
		remainder , stringify( B , 10 , D , 0 , D.length ) ,
		dividend + ' % ' + divisor + ' = ' + remainder
	) ;

}

function test_divmod ( t , dividend , divisor , quotient , remainder ) {

	const B = 10 ;

	const D = parse( 10 , B , dividend ) ;
	const d = parse( 10 , B , divisor ) ;
	const q = _zeros( D.length ) ;
	const R = _zeros( D.length ) ;

	_divmod( B , D , 0 , D.length , d , 0 , d.length , q , 0 , q.length , R , 0 , R.length ) ;

	t.is( dividend , stringify( B , 10 , D , 0 , D.length ) ) ;
	t.is( divisor , stringify( B , 10 , d , 0 , d.length ) ) ;

	t.is(
		quotient , stringify( B , 10 , q , 0 , q.length ) ,
		dividend + ' / ' + divisor + ' = ' + quotient
	) ;

	t.is(
		remainder , stringify( B , 10 , R , 0 , R.length ) ,
		dividend + ' % ' + divisor + ' = ' + remainder
	) ;

}

function macro ( ...args ) {
	test_idivmod( ...args ) ;
	test_divmod( ...args ) ;
}

macro.title = ( title , D , d , q , r ) => `${title || ''} ${D} / ${d} = ${q} % ${r}`.trim()


test( macro , '7' , '10' , '0' , '7' ) ;
test( macro , '10' , '7' , '1' , '3' ) ;
test( macro , '7' , '7' , '1' , '0' ) ;
test( macro , '4' , '2' , '2' , '0' ) ;
test( macro , '15' , '3' , '5' , '0' ) ;
test( macro , '16' , '3' , '5' , '1' ) ;

test( macro , '89' , '7' , '12' , '5' ) ;
test( macro , '789' , '77' , '10' , '19' ) ;

test( macro , '120' , '39' , '3' , '3' ) ;
{'fraction_non_alphanumeric': 0.2230160755294718, 'fraction_numerical': 0.045930084205154376, 'mean_word_length': 2.2639467110741047, 'pattern_counts': {'":': 0, '<': 3, '<?xml version=': 0, '>': 5, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 2, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '1272718', 'n_tokens_mistral': 1838, 'n_tokens_neox': 1653, 'n_words': 471}