github.com/linapex/ethereum-dpos-chinese@v0.0.0-20190316121959-b78b3a4a1ece/crypto/bn256/cloudflare/gfp_test.go (about) 1 2 //<developer> 3 // <name>linapex 曹一峰</name> 4 // <email>linapex@163.com</email> 5 // <wx>superexc</wx> 6 // <qqgroup>128148617</qqgroup> 7 // <url>https://jsq.ink</url> 8 // <role>pku engineer</role> 9 // <date>2019-03-16 12:09:36</date> 10 //</624342625310216192> 11 12 package bn256 13 14 import ( 15 "testing" 16 ) 17 18 //测试否定在装配优化和纯go上的工作方式相同 19 //实施。 20 func TestGFpNeg(t *testing.T) { 21 n := &gfP{0x0123456789abcdef, 0xfedcba9876543210, 0xdeadbeefdeadbeef, 0xfeebdaedfeebdaed} 22 w := &gfP{0xfedcba9876543211, 0x0123456789abcdef, 0x2152411021524110, 0x0114251201142512} 23 h := &gfP{} 24 25 gfpNeg(h, n) 26 if *h != *w { 27 t.Errorf("negation mismatch: have %#x, want %#x", *h, *w) 28 } 29 } 30 31 //测试添加在装配优化和纯Go上的工作方式相同 32 //实施。 33 func TestGFpAdd(t *testing.T) { 34 a := &gfP{0x0123456789abcdef, 0xfedcba9876543210, 0xdeadbeefdeadbeef, 0xfeebdaedfeebdaed} 35 b := &gfP{0xfedcba9876543210, 0x0123456789abcdef, 0xfeebdaedfeebdaed, 0xdeadbeefdeadbeef} 36 w := &gfP{0xc3df73e9278302b8, 0x687e956e978e3572, 0x254954275c18417f, 0xad354b6afc67f9b4} 37 h := &gfP{} 38 39 gfpAdd(h, a, b) 40 if *h != *w { 41 t.Errorf("addition mismatch: have %#x, want %#x", *h, *w) 42 } 43 } 44 45 //减法在程序集优化和纯go上的工作方式相同 46 //实施。 47 func TestGFpSub(t *testing.T) { 48 a := &gfP{0x0123456789abcdef, 0xfedcba9876543210, 0xdeadbeefdeadbeef, 0xfeebdaedfeebdaed} 49 b := &gfP{0xfedcba9876543210, 0x0123456789abcdef, 0xfeebdaedfeebdaed, 0xdeadbeefdeadbeef} 50 w := &gfP{0x02468acf13579bdf, 0xfdb97530eca86420, 0xdfc1e401dfc1e402, 0x203e1bfe203e1bfd} 51 h := &gfP{} 52 53 gfpSub(h, a, b) 54 if *h != *w { 55 t.Errorf("subtraction mismatch: have %#x, want %#x", *h, *w) 56 } 57 } 58 59 //乘法在程序集优化和纯go上的工作方式相同的测试 60 //实施。 61 func TestGFpMul(t *testing.T) { 62 a := &gfP{0x0123456789abcdef, 0xfedcba9876543210, 0xdeadbeefdeadbeef, 0xfeebdaedfeebdaed} 63 b := &gfP{0xfedcba9876543210, 0x0123456789abcdef, 0xfeebdaedfeebdaed, 0xdeadbeefdeadbeef} 64 w := &gfP{0xcbcbd377f7ad22d3, 0x3b89ba5d849379bf, 0x87b61627bd38b6d2, 0xc44052a2a0e654b2} 65 h := &gfP{} 66 67 gfpMul(h, a, b) 68 if *h != *w { 69 t.Errorf("multiplication mismatch: have %#x, want %#x", *h, *w) 70 } 71 } 72