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