github.com/psiphon-labs/psiphon-tunnel-core@v2.0.28+incompatible/psiphon/common/sss/polynomial_test.go (about)

     1  package sss
     2  
     3  import (
     4  	"bytes"
     5  	"testing"
     6  )
     7  
     8  var (
     9  	p  = []byte{1, 0, 2, 3}
    10  	p2 = []byte{70, 32, 6}
    11  )
    12  
    13  func TestDegree(t *testing.T) {
    14  	if v, want := degree(p), 3; v != want {
    15  		t.Errorf("Was %v, but expected %v", v, want)
    16  	}
    17  }
    18  
    19  func TestEval(t *testing.T) {
    20  	if v, want := eval(p, 2), byte(17); v != want {
    21  		t.Errorf("Was %v, but expected %v", v, want)
    22  	}
    23  }
    24  
    25  func TestGenerate(t *testing.T) {
    26  	b := []byte{1, 2, 3}
    27  
    28  	expected := []byte{10, 1, 2, 3}
    29  	actual, err := generate(3, 10, bytes.NewReader(b))
    30  	if err != nil {
    31  		t.Error(err)
    32  	}
    33  
    34  	if !bytes.Equal(actual, expected) {
    35  		t.Errorf("Was %v, but expected %v", actual, expected)
    36  	}
    37  }
    38  
    39  func TestGenerateEOF(t *testing.T) {
    40  	b := []byte{1}
    41  
    42  	p, err := generate(3, 10, bytes.NewReader(b))
    43  	if p != nil {
    44  		t.Errorf("Was %v, but expected an error", p)
    45  	}
    46  
    47  	if err == nil {
    48  		t.Error("No error returned")
    49  	}
    50  }
    51  
    52  func TestGeneratePolyEOFFullSize(t *testing.T) {
    53  	b := []byte{1, 2, 0, 0, 0, 0}
    54  
    55  	p, err := generate(3, 10, bytes.NewReader(b))
    56  	if p != nil {
    57  		t.Errorf("Was %v, but xpected an error", p)
    58  	}
    59  
    60  	if err == nil {
    61  		t.Error("No error returned")
    62  	}
    63  }
    64  
    65  func TestGenerateFullSize(t *testing.T) {
    66  	b := []byte{1, 2, 0, 4}
    67  
    68  	expected := []byte{10, 1, 2, 4}
    69  	actual, err := generate(3, 10, bytes.NewReader(b))
    70  	if err != nil {
    71  		t.Error(err)
    72  	}
    73  
    74  	if !bytes.Equal(actual, expected) {
    75  		t.Errorf("Was %v but expected %v", actual, expected)
    76  	}
    77  }
    78  
    79  func TestInterpolate(t *testing.T) {
    80  	in := []pair{
    81  		pair{x: 1, y: 1},
    82  		pair{x: 2, y: 2},
    83  		pair{x: 3, y: 3},
    84  	}
    85  
    86  	if v, want := interpolate(in, 0), byte(0); v != want {
    87  		t.Errorf("Was %v, but expected %v", v, want)
    88  	}
    89  }