|
1 | 1 | import test from 'ava' ; |
2 | | -import * as permutation from '../../src' ; |
| 2 | +import { copy , compose , identity , transpose } from '../../src' ; |
| 3 | +import { randint , shuffle } from '@aureooms/js-random' ; |
3 | 4 |
|
4 | | -import * as random from "@aureooms/js-random" ; |
| 5 | +function macro ( t , size ) { |
5 | 6 |
|
6 | | -test( "transpose" , t => { |
| 7 | + const sigma = identity( size ) ; |
7 | 8 |
|
8 | | - var m , n , rho , sigma , tau , upsilon , a , b ; |
| 9 | + shuffle( sigma , 0 , size ) ; |
9 | 10 |
|
10 | | - m = 101 ; |
| 11 | + const a = randint( 0 , size ) ; |
11 | 12 |
|
12 | | - for ( n = 1 ; n < m ; ++n ) { |
| 13 | + const b = randint( 0 , size ) ; |
13 | 14 |
|
14 | | - sigma = permutation.identity( n ) ; |
| 15 | + const tau = transpose( sigma , a , b ) ; |
15 | 16 |
|
16 | | - random.shuffle( sigma , 0 , n ) ; |
| 17 | + let rho = identity( size ) ; |
17 | 18 |
|
18 | | - a = random.randint( 0 , n ) ; |
| 19 | + shuffle( rho , 0 , size ) ; |
19 | 20 |
|
20 | | - b = random.randint( 0 , n ) ; |
| 21 | + let upsilon = copy( rho ) ; |
21 | 22 |
|
22 | | - tau = permutation.transpose( sigma , a , b ) ; |
| 23 | + rho = compose( rho , sigma ) ; |
| 24 | + upsilon = compose( upsilon , tau ) ; |
23 | 25 |
|
24 | | - rho = permutation.identity( n ) ; |
| 26 | + t.deepEqual( rho[a] , upsilon[b] , 'rho[a] is upsilon[b]' ) ; |
| 27 | + t.deepEqual( rho[b] , upsilon[a] , ': rho[b] is upsilon[a]' ) ; |
25 | 28 |
|
26 | | - random.shuffle( rho , 0 , n ) ; |
| 29 | + upsilon = transpose( upsilon , a , b ) ; |
27 | 30 |
|
28 | | - upsilon = permutation.copy( rho ) ; |
| 31 | + t.deepEqual( upsilon , rho , 'upsilon is rho after transpose' ) ; |
29 | 32 |
|
30 | | - rho = permutation.compose( rho , sigma ) ; |
31 | | - upsilon = permutation.compose( upsilon , tau ) ; |
| 33 | +} |
32 | 34 |
|
33 | | - t.deepEqual( rho[a] , upsilon[b] , n + " : rho[a] is upsilon[b]" ) ; |
34 | | - t.deepEqual( rho[b] , upsilon[a] , n + " : rho[b] is upsilon[a]" ) ; |
| 35 | +macro.title = ( _ , size ) => `transpose (${size})` ; |
35 | 36 |
|
36 | | - upsilon = permutation.transpose( upsilon , a , b ) ; |
37 | | - |
38 | | - t.deepEqual( upsilon , rho , n + " : upsilon is tau after transpose" ) ; |
39 | | - |
40 | | - } |
41 | | - |
42 | | -} ) ; |
| 37 | +for ( let n = 1 ; n <= 100 ; ++n ) test( macro , n ) ; |
0 commit comments