|
|
package circuitcompiler
import ( //"fmt"
////"math/big"
//"strings"
"testing"
"github.com/stretchr/testify/assert" )
func TestXor(t *testing.T) { assert.Equal(t, false, Xor(true, true)) assert.Equal(t, true, Xor(true, false)) assert.Equal(t, true, Xor(false, true)) assert.Equal(t, false, Xor(false, false))
}
func TestCircuitParser(t *testing.T) {
//flat := `
//func main(a,b):
// c = a / b
// d = c * b
// e = d - c
// f = c * 55
// out = f / e
//`
//flat := `
//func test(a,b):
// d = a / b
// c = a + d
// f = a * 55
// g = a / d
// h = g + f
// i = c + h
// out = i / c
//`
//parser := NewParser(strings.NewReader(flat))
//programm, err := parser.Parse()
//circuit := programm.getMainCircuit()
//assert.Nil(t, err)
//fmt.Println("\n unreduced")
//fmt.Println(flat)
//fmt.Println("generating R1CS from flat code")
//a, b, c := circuit.GenerateR1CS()
//fmt.Println(a)
//fmt.Println(b)
//fmt.Println(c)
//
//a1 := big.NewInt(int64(6))
//a2 := big.NewInt(int64(5))
//inputs := []*big.Int{a1, a2}
//// Calculate Witness
//w, err := circuit.CalculateWitness(inputs)
//assert.Nil(t, err)
//fmt.Println("w", w)
//fmt.Printf("inputs %s", circuit.Inputs)
//fmt.Printf("signals %s", circuit.Signals)
//
//fmt.Println("Reduced Tree Parsing")
//r := circuit.BuildConstraintTree()
//constraintReduced := ReduceTree(r)
//fmt.Printf("depth %v, mGates %v \n", printDepth(r, 0), CountMultiplicationGates(r))
//printTree(r, 0)
//
//a,b,c,w = circuit.GenerateReducedR1CSandWitness(inputs,constraintReduced)
//fmt.Println("\ngenerating R1CS from reduced flat code")
//fmt.Println("\nR1CS:")
//fmt.Println("a:", a)
//fmt.Println("b:", b)
//fmt.Println("c:", c)
//fmt.Println("w", w)
//// R1CS to QAP
//alphas, betas, gammas, zxQAP := fields.R1CSToQAP(a, b, c)
//fmt.Println("qap")
//fmt.Println("alphas", len(alphas))
//fmt.Println("alphas", alphas[0])
//fmt.Println("betas", len(betas))
//fmt.Println("gammas", len(gammas))
//fmt.Println("zx length", len(zxQAP))
//circuit.reduceAdditionGates()
//
//fmt.Println(circuit)
//fmt.Println("generating R1CS from flat code")
//a, b, c = circuit.GenerateR1CS()
//
//fmt.Println(a)
//fmt.Println(b)
//fmt.Println(c)
//
//// Calculate Witness
//w, err = circuit.CalculateWitness(inputs)
//assert.Nil(t, err)
//fmt.Println("w", w)
//// expected result
//b0 := big.NewInt(int64(0))
//b1 := big.NewInt(int64(1))
//b5 := big.NewInt(int64(5))
//aExpected := [][]*big.Int{
// []*big.Int{b0, b0, b1, b0, b0, b0},
// []*big.Int{b0, b0, b0, b1, b0, b0},
// []*big.Int{b0, b0, b1, b0, b1, b0},
// []*big.Int{b5, b0, b0, b0, b0, b1},
//}
//bExpected := [][]*big.Int{
// []*big.Int{b0, b0, b1, b0, b0, b0},
// []*big.Int{b0, b0, b1, b0, b0, b0},
// []*big.Int{b1, b0, b0, b0, b0, b0},
// []*big.Int{b1, b0, b0, b0, b0, b0},
//}
//cExpected := [][]*big.Int{
// []*big.Int{b0, b0, b0, b1, b0, b0},
// []*big.Int{b0, b0, b0, b0, b1, b0},
// []*big.Int{b0, b0, b0, b0, b0, b1},
// []*big.Int{b0, b1, b0, b0, b0, b0},
//}
//assert.Equal(t, aExpected, a)
//assert.Equal(t, bExpected, b)
//assert.Equal(t, cExpected, c)
}
|