initial commits
parent
997a5dc37a
commit
94e13d7ad0
|
@ -0,0 +1,31 @@
|
|||
package iid
|
||||
|
||||
const (
|
||||
maxbitwidth = 64
|
||||
)
|
||||
|
||||
const (
|
||||
maskfirst = 0b0111111111111111111111111111111111111111000000000000000000000000
|
||||
masksecond = 0b0000000000000000000000000000000000000000111111111111111111111111
|
||||
)
|
||||
|
||||
const (
|
||||
widthfirst = 40
|
||||
widthsecond = maxbitwidth - widthfirst
|
||||
)
|
||||
|
||||
func compile(first uint64, second uint64) uint64 {
|
||||
|
||||
var compiled uint64 = ((first << widthsecond) & maskfirst) | (second & masksecond)
|
||||
|
||||
return compiled
|
||||
|
||||
}
|
||||
|
||||
func decompile(value uint64) (uint64, uint64) {
|
||||
|
||||
var first uint64 = (value & maskfirst) >> widthsecond
|
||||
var second uint64 = value & masksecond
|
||||
|
||||
return first, second
|
||||
}
|
|
@ -0,0 +1,885 @@
|
|||
package iid
|
||||
|
||||
import (
|
||||
"testing"
|
||||
)
|
||||
|
||||
func TestCompile(t *testing.T) {
|
||||
|
||||
tests := []struct{
|
||||
First uint64
|
||||
Second uint64
|
||||
Expected uint64
|
||||
}{
|
||||
{
|
||||
// v
|
||||
First: 0b0000000000000000000000000000000000000000000000000000000000000001,
|
||||
Second: 0b0000000000000000000000000000000000000000000000000000000000000000,
|
||||
Expected: 0b0000000000000000000000000000000000000001000000000000000000000000,
|
||||
// ^
|
||||
},
|
||||
{
|
||||
// v
|
||||
First: 0b0000000000000000000000000000000000000000000000000000000000000010,
|
||||
Second: 0b0000000000000000000000000000000000000000000000000000000000000000,
|
||||
Expected: 0b0000000000000000000000000000000000000010000000000000000000000000,
|
||||
// ^
|
||||
},
|
||||
{
|
||||
// v
|
||||
First: 0b0000000000000000000000000000000000000000000000000000000000000100,
|
||||
Second: 0b0000000000000000000000000000000000000000000000000000000000000000,
|
||||
Expected: 0b0000000000000000000000000000000000000100000000000000000000000000,
|
||||
// ^
|
||||
},
|
||||
{
|
||||
// v
|
||||
First: 0b0000000000000000000000000000000000000000000000000000000000001000,
|
||||
Second: 0b0000000000000000000000000000000000000000000000000000000000000000,
|
||||
Expected: 0b0000000000000000000000000000000000001000000000000000000000000000,
|
||||
// ^
|
||||
},
|
||||
{
|
||||
// v
|
||||
First: 0b0000000000000000000000000000000000000000000000000000000000010000,
|
||||
Second: 0b0000000000000000000000000000000000000000000000000000000000000000,
|
||||
Expected: 0b0000000000000000000000000000000000010000000000000000000000000000,
|
||||
// ^
|
||||
},
|
||||
{
|
||||
// v
|
||||
First: 0b0000000000000000000000000000000000000000000000000000000000100000,
|
||||
Second: 0b0000000000000000000000000000000000000000000000000000000000000000,
|
||||
Expected: 0b0000000000000000000000000000000000100000000000000000000000000000,
|
||||
// ^
|
||||
},
|
||||
{
|
||||
// v
|
||||
First: 0b0000000000000000000000000000000000000000000000000000000001000000,
|
||||
Second: 0b0000000000000000000000000000000000000000000000000000000000000000,
|
||||
Expected: 0b0000000000000000000000000000000001000000000000000000000000000000,
|
||||
// ^
|
||||
},
|
||||
{
|
||||
// v
|
||||
First: 0b0000000000000000000000000000000000000000000000000000000010000000,
|
||||
Second: 0b0000000000000000000000000000000000000000000000000000000000000000,
|
||||
Expected: 0b0000000000000000000000000000000010000000000000000000000000000000,
|
||||
// ^
|
||||
},
|
||||
{
|
||||
// v
|
||||
First: 0b0000000000000000000000000000000000000000000000000000000100000000,
|
||||
Second: 0b0000000000000000000000000000000000000000000000000000000000000000,
|
||||
Expected: 0b0000000000000000000000000000000100000000000000000000000000000000,
|
||||
// ^
|
||||
},
|
||||
{
|
||||
// v
|
||||
First: 0b0000000000000000000000000000000000000000000000000000001000000000,
|
||||
Second: 0b0000000000000000000000000000000000000000000000000000000000000000,
|
||||
Expected: 0b0000000000000000000000000000001000000000000000000000000000000000,
|
||||
// ^
|
||||
},
|
||||
{
|
||||
// v
|
||||
First: 0b0000000000000000000000000000000000000000000000000000010000000000,
|
||||
Second: 0b0000000000000000000000000000000000000000000000000000000000000000,
|
||||
Expected: 0b0000000000000000000000000000010000000000000000000000000000000000,
|
||||
// ^
|
||||
},
|
||||
{
|
||||
// v
|
||||
First: 0b0000000000000000000000000000000000000000000000000000100000000000,
|
||||
Second: 0b0000000000000000000000000000000000000000000000000000000000000000,
|
||||
Expected: 0b0000000000000000000000000000100000000000000000000000000000000000,
|
||||
// ^
|
||||
},
|
||||
{
|
||||
// v
|
||||
First: 0b0000000000000000000000000000000000000000000000000001000000000000,
|
||||
Second: 0b0000000000000000000000000000000000000000000000000000000000000000,
|
||||
Expected: 0b0000000000000000000000000001000000000000000000000000000000000000,
|
||||
// ^
|
||||
},
|
||||
{
|
||||
// v
|
||||
First: 0b0000000000000000000000000000000000000000000000000010000000000000,
|
||||
Second: 0b0000000000000000000000000000000000000000000000000000000000000000,
|
||||
Expected: 0b0000000000000000000000000010000000000000000000000000000000000000,
|
||||
// ^
|
||||
},
|
||||
{
|
||||
// v
|
||||
First: 0b0000000000000000000000000000000000000000000000000100000000000000,
|
||||
Second: 0b0000000000000000000000000000000000000000000000000000000000000000,
|
||||
Expected: 0b0000000000000000000000000100000000000000000000000000000000000000,
|
||||
// ^
|
||||
},
|
||||
{
|
||||
// v
|
||||
First: 0b0000000000000000000000000000000000000000000000001000000000000000,
|
||||
Second: 0b0000000000000000000000000000000000000000000000000000000000000000,
|
||||
Expected: 0b0000000000000000000000001000000000000000000000000000000000000000,
|
||||
// ^
|
||||
},
|
||||
{
|
||||
// v
|
||||
First: 0b0000000000000000000000000000000000000000000000010000000000000000,
|
||||
Second: 0b0000000000000000000000000000000000000000000000000000000000000000,
|
||||
Expected: 0b0000000000000000000000010000000000000000000000000000000000000000,
|
||||
// ^
|
||||
},
|
||||
{
|
||||
// v
|
||||
First: 0b0000000000000000000000000000000000000000000000100000000000000000,
|
||||
Second: 0b0000000000000000000000000000000000000000000000000000000000000000,
|
||||
Expected: 0b0000000000000000000000100000000000000000000000000000000000000000,
|
||||
// ^
|
||||
},
|
||||
{
|
||||
// v
|
||||
First: 0b0000000000000000000000000000000000000000000001000000000000000000,
|
||||
Second: 0b0000000000000000000000000000000000000000000000000000000000000000,
|
||||
Expected: 0b0000000000000000000001000000000000000000000000000000000000000000,
|
||||
// ^
|
||||
},
|
||||
{
|
||||
// v
|
||||
First: 0b0000000000000000000000000000000000000000000010000000000000000000,
|
||||
Second: 0b0000000000000000000000000000000000000000000000000000000000000000,
|
||||
Expected: 0b0000000000000000000010000000000000000000000000000000000000000000,
|
||||
// ^
|
||||
},
|
||||
{
|
||||
// v
|
||||
First: 0b0000000000000000000000000000000000000000000100000000000000000000,
|
||||
Second: 0b0000000000000000000000000000000000000000000000000000000000000000,
|
||||
Expected: 0b0000000000000000000100000000000000000000000000000000000000000000,
|
||||
// ^
|
||||
},
|
||||
{
|
||||
// v
|
||||
First: 0b0000000000000000000000000000000000000000001000000000000000000000,
|
||||
Second: 0b0000000000000000000000000000000000000000000000000000000000000000,
|
||||
Expected: 0b0000000000000000001000000000000000000000000000000000000000000000,
|
||||
// ^
|
||||
},
|
||||
{
|
||||
// v
|
||||
First: 0b0000000000000000000000000000000000000000010000000000000000000000,
|
||||
Second: 0b0000000000000000000000000000000000000000000000000000000000000000,
|
||||
Expected: 0b0000000000000000010000000000000000000000000000000000000000000000,
|
||||
// ^
|
||||
},
|
||||
{
|
||||
// v
|
||||
First: 0b0000000000000000000000000000000000000000100000000000000000000000,
|
||||
Second: 0b0000000000000000000000000000000000000000000000000000000000000000,
|
||||
Expected: 0b0000000000000000100000000000000000000000000000000000000000000000,
|
||||
// ^
|
||||
},
|
||||
{
|
||||
// v
|
||||
First: 0b0000000000000000000000000000000000000001000000000000000000000000,
|
||||
Second: 0b0000000000000000000000000000000000000000000000000000000000000000,
|
||||
Expected: 0b0000000000000001000000000000000000000000000000000000000000000000,
|
||||
// ^
|
||||
},
|
||||
{
|
||||
// v
|
||||
First: 0b0000000000000000000000000000000000000010000000000000000000000000,
|
||||
Second: 0b0000000000000000000000000000000000000000000000000000000000000000,
|
||||
Expected: 0b0000000000000010000000000000000000000000000000000000000000000000,
|
||||
// ^
|
||||
},
|
||||
{
|
||||
// v
|
||||
First: 0b0000000000000000000000000000000000000100000000000000000000000000,
|
||||
Second: 0b0000000000000000000000000000000000000000000000000000000000000000,
|
||||
Expected: 0b0000000000000100000000000000000000000000000000000000000000000000,
|
||||
// ^
|
||||
},
|
||||
{
|
||||
// v
|
||||
First: 0b0000000000000000000000000000000000001000000000000000000000000000,
|
||||
Second: 0b0000000000000000000000000000000000000000000000000000000000000000,
|
||||
Expected: 0b0000000000001000000000000000000000000000000000000000000000000000,
|
||||
// ^
|
||||
},
|
||||
{
|
||||
// v
|
||||
First: 0b0000000000000000000000000000000000010000000000000000000000000000,
|
||||
Second: 0b0000000000000000000000000000000000000000000000000000000000000000,
|
||||
Expected: 0b0000000000010000000000000000000000000000000000000000000000000000,
|
||||
// ^
|
||||
},
|
||||
{
|
||||
// v
|
||||
First: 0b0000000000000000000000000000000000100000000000000000000000000000,
|
||||
Second: 0b0000000000000000000000000000000000000000000000000000000000000000,
|
||||
Expected: 0b0000000000100000000000000000000000000000000000000000000000000000,
|
||||
// ^
|
||||
},
|
||||
{
|
||||
// v
|
||||
First: 0b0000000000000000000000000000000001000000000000000000000000000000,
|
||||
Second: 0b0000000000000000000000000000000000000000000000000000000000000000,
|
||||
Expected: 0b0000000001000000000000000000000000000000000000000000000000000000,
|
||||
// ^
|
||||
},
|
||||
{
|
||||
// v
|
||||
First: 0b0000000000000000000000000000000010000000000000000000000000000000,
|
||||
Second: 0b0000000000000000000000000000000000000000000000000000000000000000,
|
||||
Expected: 0b0000000010000000000000000000000000000000000000000000000000000000,
|
||||
// ^
|
||||
},
|
||||
{
|
||||
// v
|
||||
First: 0b0000000000000000000000000000000100000000000000000000000000000000,
|
||||
Second: 0b0000000000000000000000000000000000000000000000000000000000000000,
|
||||
Expected: 0b0000000100000000000000000000000000000000000000000000000000000000,
|
||||
// ^
|
||||
},
|
||||
{
|
||||
// v
|
||||
First: 0b0000000000000000000000000000001000000000000000000000000000000000,
|
||||
Second: 0b0000000000000000000000000000000000000000000000000000000000000000,
|
||||
Expected: 0b0000001000000000000000000000000000000000000000000000000000000000,
|
||||
// ^
|
||||
},
|
||||
{
|
||||
// v
|
||||
First: 0b0000000000000000000000000000010000000000000000000000000000000000,
|
||||
Second: 0b0000000000000000000000000000000000000000000000000000000000000000,
|
||||
Expected: 0b0000010000000000000000000000000000000000000000000000000000000000,
|
||||
// ^
|
||||
},
|
||||
{
|
||||
// v
|
||||
First: 0b0000000000000000000000000000100000000000000000000000000000000000,
|
||||
Second: 0b0000000000000000000000000000000000000000000000000000000000000000,
|
||||
Expected: 0b0000100000000000000000000000000000000000000000000000000000000000,
|
||||
// ^
|
||||
},
|
||||
{
|
||||
// v
|
||||
First: 0b0000000000000000000000000001000000000000000000000000000000000000,
|
||||
Second: 0b0000000000000000000000000000000000000000000000000000000000000000,
|
||||
Expected: 0b0001000000000000000000000000000000000000000000000000000000000000,
|
||||
// ^
|
||||
},
|
||||
{
|
||||
// v
|
||||
First: 0b0000000000000000000000000010000000000000000000000000000000000000,
|
||||
Second: 0b0000000000000000000000000000000000000000000000000000000000000000,
|
||||
Expected: 0b0010000000000000000000000000000000000000000000000000000000000000,
|
||||
// ^
|
||||
},
|
||||
{
|
||||
// v
|
||||
First: 0b0000000000000000000000000100000000000000000000000000000000000000,
|
||||
Second: 0b0000000000000000000000000000000000000000000000000000000000000000,
|
||||
Expected: 0b0100000000000000000000000000000000000000000000000000000000000000,
|
||||
// ^
|
||||
},
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
{
|
||||
First: 0b0000000000000000000000000000000000000000000000000000000000000000,
|
||||
// v
|
||||
Second: 0b0100000000000000000000000000000000000000000000000000000000000000,
|
||||
Expected: 0b0000000000000000000000000000000000000000000000000000000000000000,
|
||||
},
|
||||
{
|
||||
First: 0b0000000000000000000000000000000000000000000000000000000000000000,
|
||||
// v
|
||||
Second: 0b0010000000000000000000000000000000000000000000000000000000000000,
|
||||
Expected: 0b0000000000000000000000000000000000000000000000000000000000000000,
|
||||
},
|
||||
{
|
||||
First: 0b0000000000000000000000000000000000000000000000000000000000000000,
|
||||
// v
|
||||
Second: 0b0001000000000000000000000000000000000000000000000000000000000000,
|
||||
Expected: 0b0000000000000000000000000000000000000000000000000000000000000000,
|
||||
},
|
||||
{
|
||||
First: 0b0000000000000000000000000000000000000000000000000000000000000000,
|
||||
// v
|
||||
Second: 0b0000100000000000000000000000000000000000000000000000000000000000,
|
||||
Expected: 0b0000000000000000000000000000000000000000000000000000000000000000,
|
||||
},
|
||||
{
|
||||
First: 0b0000000000000000000000000000000000000000000000000000000000000000,
|
||||
// v
|
||||
Second: 0b0000010000000000000000000000000000000000000000000000000000000000,
|
||||
Expected: 0b0000000000000000000000000000000000000000000000000000000000000000,
|
||||
},
|
||||
{
|
||||
First: 0b0000000000000000000000000000000000000000000000000000000000000000,
|
||||
// v
|
||||
Second: 0b0000001000000000000000000000000000000000000000000000000000000000,
|
||||
Expected: 0b0000000000000000000000000000000000000000000000000000000000000000,
|
||||
},
|
||||
{
|
||||
First: 0b0000000000000000000000000000000000000000000000000000000000000000,
|
||||
// v
|
||||
Second: 0b0000000100000000000000000000000000000000000000000000000000000000,
|
||||
Expected: 0b0000000000000000000000000000000000000000000000000000000000000000,
|
||||
},
|
||||
{
|
||||
First: 0b0000000000000000000000000000000000000000000000000000000000000000,
|
||||
// v
|
||||
Second: 0b0000000010000000000000000000000000000000000000000000000000000000,
|
||||
Expected: 0b0000000000000000000000000000000000000000000000000000000000000000,
|
||||
},
|
||||
{
|
||||
First: 0b0000000000000000000000000000000000000000000000000000000000000000,
|
||||
// v
|
||||
Second: 0b0000000001000000000000000000000000000000000000000000000000000000,
|
||||
Expected: 0b0000000000000000000000000000000000000000000000000000000000000000,
|
||||
},
|
||||
{
|
||||
First: 0b0000000000000000000000000000000000000000000000000000000000000000,
|
||||
// v
|
||||
Second: 0b0000000000100000000000000000000000000000000000000000000000000000,
|
||||
Expected: 0b0000000000000000000000000000000000000000000000000000000000000000,
|
||||
},
|
||||
{
|
||||
First: 0b0000000000000000000000000000000000000000000000000000000000000000,
|
||||
// v
|
||||
Second: 0b0000000000010000000000000000000000000000000000000000000000000000,
|
||||
Expected: 0b0000000000000000000000000000000000000000000000000000000000000000,
|
||||
},
|
||||
{
|
||||
First: 0b0000000000000000000000000000000000000000000000000000000000000000,
|
||||
// v
|
||||
Second: 0b0000000000001000000000000000000000000000000000000000000000000000,
|
||||
Expected: 0b0000000000000000000000000000000000000000000000000000000000000000,
|
||||
},
|
||||
{
|
||||
First: 0b0000000000000000000000000000000000000000000000000000000000000000,
|
||||
// v
|
||||
Second: 0b0000000000000100000000000000000000000000000000000000000000000000,
|
||||
Expected: 0b0000000000000000000000000000000000000000000000000000000000000000,
|
||||
},
|
||||
{
|
||||
First: 0b0000000000000000000000000000000000000000000000000000000000000000,
|
||||
// v
|
||||
Second: 0b0000000000000010000000000000000000000000000000000000000000000000,
|
||||
Expected: 0b0000000000000000000000000000000000000000000000000000000000000000,
|
||||
},
|
||||
{
|
||||
First: 0b0000000000000000000000000000000000000000000000000000000000000000,
|
||||
// v
|
||||
Second: 0b0000000000000001000000000000000000000000000000000000000000000000,
|
||||
Expected: 0b0000000000000000000000000000000000000000000000000000000000000000,
|
||||
},
|
||||
{
|
||||
First: 0b0000000000000000000000000000000000000000000000000000000000000000,
|
||||
// v
|
||||
Second: 0b0000000000000000100000000000000000000000000000000000000000000000,
|
||||
Expected: 0b0000000000000000000000000000000000000000000000000000000000000000,
|
||||
},
|
||||
{
|
||||
First: 0b0000000000000000000000000000000000000000000000000000000000000000,
|
||||
// v
|
||||
Second: 0b0000000000000000010000000000000000000000000000000000000000000000,
|
||||
Expected: 0b0000000000000000000000000000000000000000000000000000000000000000,
|
||||
},
|
||||
{
|
||||
First: 0b0000000000000000000000000000000000000000000000000000000000000000,
|
||||
// v
|
||||
Second: 0b0000000000000000001000000000000000000000000000000000000000000000,
|
||||
Expected: 0b0000000000000000000000000000000000000000000000000000000000000000,
|
||||
},
|
||||
{
|
||||
First: 0b0000000000000000000000000000000000000000000000000000000000000000,
|
||||
// v
|
||||
Second: 0b0000000000000000000100000000000000000000000000000000000000000000,
|
||||
Expected: 0b0000000000000000000000000000000000000000000000000000000000000000,
|
||||
},
|
||||
{
|
||||
First: 0b0000000000000000000000000000000000000000000000000000000000000000,
|
||||
// v
|
||||
Second: 0b0000000000000000000010000000000000000000000000000000000000000000,
|
||||
Expected: 0b0000000000000000000000000000000000000000000000000000000000000000,
|
||||
},
|
||||
{
|
||||
First: 0b0000000000000000000000000000000000000000000000000000000000000000,
|
||||
// v
|
||||
Second: 0b0000000000000000000001000000000000000000000000000000000000000000,
|
||||
Expected: 0b0000000000000000000000000000000000000000000000000000000000000000,
|
||||
},
|
||||
{
|
||||
First: 0b0000000000000000000000000000000000000000000000000000000000000000,
|
||||
// v
|
||||
Second: 0b0000000000000000000000100000000000000000000000000000000000000000,
|
||||
Expected: 0b0000000000000000000000000000000000000000000000000000000000000000,
|
||||
},
|
||||
{
|
||||
First: 0b0000000000000000000000000000000000000000000000000000000000000000,
|
||||
// v
|
||||
Second: 0b0000000000000000000000010000000000000000000000000000000000000000,
|
||||
Expected: 0b0000000000000000000000000000000000000000000000000000000000000000,
|
||||
},
|
||||
{
|
||||
First: 0b0000000000000000000000000000000000000000000000000000000000000000,
|
||||
// v
|
||||
Second: 0b0000000000000000000000001000000000000000000000000000000000000000,
|
||||
Expected: 0b0000000000000000000000000000000000000000000000000000000000000000,
|
||||
},
|
||||
{
|
||||
First: 0b0000000000000000000000000000000000000000000000000000000000000000,
|
||||
// v
|
||||
Second: 0b0000000000000000000000000100000000000000000000000000000000000000,
|
||||
Expected: 0b0000000000000000000000000000000000000000000000000000000000000000,
|
||||
},
|
||||
{
|
||||
First: 0b0000000000000000000000000000000000000000000000000000000000000000,
|
||||
// v
|
||||
Second: 0b0000000000000000000000000010000000000000000000000000000000000000,
|
||||
Expected: 0b0000000000000000000000000000000000000000000000000000000000000000,
|
||||
},
|
||||
{
|
||||
First: 0b0000000000000000000000000000000000000000000000000000000000000000,
|
||||
// v
|
||||
Second: 0b0000000000000000000000000001000000000000000000000000000000000000,
|
||||
Expected: 0b0000000000000000000000000000000000000000000000000000000000000000,
|
||||
},
|
||||
{
|
||||
First: 0b0000000000000000000000000000000000000000000000000000000000000000,
|
||||
// v
|
||||
Second: 0b0000000000000000000000000000100000000000000000000000000000000000,
|
||||
Expected: 0b0000000000000000000000000000000000000000000000000000000000000000,
|
||||
},
|
||||
{
|
||||
First: 0b0000000000000000000000000000000000000000000000000000000000000000,
|
||||
// v
|
||||
Second: 0b0000000000000000000000000000010000000000000000000000000000000000,
|
||||
Expected: 0b0000000000000000000000000000000000000000000000000000000000000000,
|
||||
},
|
||||
{
|
||||
First: 0b0000000000000000000000000000000000000000000000000000000000000000,
|
||||
// v
|
||||
Second: 0b0000000000000000000000000000001000000000000000000000000000000000,
|
||||
Expected: 0b0000000000000000000000000000000000000000000000000000000000000000,
|
||||
},
|
||||
{
|
||||
First: 0b0000000000000000000000000000000000000000000000000000000000000000,
|
||||
// v
|
||||
Second: 0b0000000000000000000000000000000100000000000000000000000000000000,
|
||||
Expected: 0b0000000000000000000000000000000000000000000000000000000000000000,
|
||||
},
|
||||
{
|
||||
First: 0b0000000000000000000000000000000000000000000000000000000000000000,
|
||||
// v
|
||||
Second: 0b0000000000000000000000000000000010000000000000000000000000000000,
|
||||
Expected: 0b0000000000000000000000000000000000000000000000000000000000000000,
|
||||
},
|
||||
{
|
||||
First: 0b0000000000000000000000000000000000000000000000000000000000000000,
|
||||
// v
|
||||
Second: 0b0000000000000000000000000000000001000000000000000000000000000000,
|
||||
Expected: 0b0000000000000000000000000000000000000000000000000000000000000000,
|
||||
},
|
||||
{
|
||||
First: 0b0000000000000000000000000000000000000000000000000000000000000000,
|
||||
// v
|
||||
Second: 0b0000000000000000000000000000000000100000000000000000000000000000,
|
||||
Expected: 0b0000000000000000000000000000000000000000000000000000000000000000,
|
||||
},
|
||||
{
|
||||
First: 0b0000000000000000000000000000000000000000000000000000000000000000,
|
||||
// v
|
||||
Second: 0b0000000000000000000000000000000000010000000000000000000000000000,
|
||||
Expected: 0b0000000000000000000000000000000000000000000000000000000000000000,
|
||||
},
|
||||
{
|
||||
First: 0b0000000000000000000000000000000000000000000000000000000000000000,
|
||||
// v
|
||||
Second: 0b0000000000000000000000000000000000001000000000000000000000000000,
|
||||
Expected: 0b0000000000000000000000000000000000000000000000000000000000000000,
|
||||
},
|
||||
{
|
||||
First: 0b0000000000000000000000000000000000000000000000000000000000000000,
|
||||
// v
|
||||
Second: 0b0000000000000000000000000000000000000100000000000000000000000000,
|
||||
Expected: 0b0000000000000000000000000000000000000000000000000000000000000000,
|
||||
},
|
||||
{
|
||||
First: 0b0000000000000000000000000000000000000000000000000000000000000000,
|
||||
// v
|
||||
Second: 0b0000000000000000000000000000000000000010000000000000000000000000,
|
||||
Expected: 0b0000000000000000000000000000000000000000000000000000000000000000,
|
||||
},
|
||||
{
|
||||
First: 0b0000000000000000000000000000000000000000000000000000000000000000,
|
||||
// v
|
||||
Second: 0b0000000000000000000000000000000000000001000000000000000000000000,
|
||||
Expected: 0b0000000000000000000000000000000000000000000000000000000000000000,
|
||||
},
|
||||
|
||||
|
||||
|
||||
|
||||
{
|
||||
First: 0b0000000000000000000000000000000000000000000000000000000000000000,
|
||||
// v
|
||||
Second: 0b0000000000000000000000000000000000000000100000000000000000000000,
|
||||
Expected: 0b0000000000000000000000000000000000000000100000000000000000000000,
|
||||
},
|
||||
{
|
||||
First: 0b0000000000000000000000000000000000000000000000000000000000000000,
|
||||
// v
|
||||
Second: 0b0000000000000000000000000000000000000000010000000000000000000000,
|
||||
Expected: 0b0000000000000000000000000000000000000000010000000000000000000000,
|
||||
},
|
||||
{
|
||||
First: 0b0000000000000000000000000000000000000000000000000000000000000000,
|
||||
// v
|
||||
Second: 0b0000000000000000000000000000000000000000001000000000000000000000,
|
||||
Expected: 0b0000000000000000000000000000000000000000001000000000000000000000,
|
||||
},
|
||||
{
|
||||
First: 0b0000000000000000000000000000000000000000000000000000000000000000,
|
||||
// v
|
||||
Second: 0b0000000000000000000000000000000000000000000100000000000000000000,
|
||||
Expected: 0b0000000000000000000000000000000000000000000100000000000000000000,
|
||||
},
|
||||
{
|
||||
First: 0b0000000000000000000000000000000000000000000000000000000000000000,
|
||||
// v
|
||||
Second: 0b0000000000000000000000000000000000000000000010000000000000000000,
|
||||
Expected: 0b0000000000000000000000000000000000000000000010000000000000000000,
|
||||
},
|
||||
{
|
||||
First: 0b0000000000000000000000000000000000000000000000000000000000000000,
|
||||
// v
|
||||
Second: 0b0000000000000000000000000000000000000000000001000000000000000000,
|
||||
Expected: 0b0000000000000000000000000000000000000000000001000000000000000000,
|
||||
},
|
||||
{
|
||||
First: 0b0000000000000000000000000000000000000000000000000000000000000000,
|
||||
// v
|
||||
Second: 0b0000000000000000000000000000000000000000000000100000000000000000,
|
||||
Expected: 0b0000000000000000000000000000000000000000000000100000000000000000,
|
||||
},
|
||||
{
|
||||
First: 0b0000000000000000000000000000000000000000000000000000000000000000,
|
||||
// v
|
||||
Second: 0b0000000000000000000000000000000000000000000000010000000000000000,
|
||||
Expected: 0b0000000000000000000000000000000000000000000000010000000000000000,
|
||||
},
|
||||
{
|
||||
First: 0b0000000000000000000000000000000000000000000000000000000000000000,
|
||||
// v
|
||||
Second: 0b0000000000000000000000000000000000000000000000001000000000000000,
|
||||
Expected: 0b0000000000000000000000000000000000000000000000001000000000000000,
|
||||
},
|
||||
{
|
||||
First: 0b0000000000000000000000000000000000000000000000000000000000000000,
|
||||
// v
|
||||
Second: 0b0000000000000000000000000000000000000000000000000100000000000000,
|
||||
Expected: 0b0000000000000000000000000000000000000000000000000100000000000000,
|
||||
},
|
||||
{
|
||||
First: 0b0000000000000000000000000000000000000000000000000000000000000000,
|
||||
// v
|
||||
Second: 0b0000000000000000000000000000000000000000000000000010000000000000,
|
||||
Expected: 0b0000000000000000000000000000000000000000000000000010000000000000,
|
||||
},
|
||||
{
|
||||
First: 0b0000000000000000000000000000000000000000000000000000000000000000,
|
||||
// v
|
||||
Second: 0b0000000000000000000000000000000000000000000000000001000000000000,
|
||||
Expected: 0b0000000000000000000000000000000000000000000000000001000000000000,
|
||||
},
|
||||
{
|
||||
First: 0b0000000000000000000000000000000000000000000000000000000000000000,
|
||||
// v
|
||||
Second: 0b0000000000000000000000000000000000000000000000000000100000000000,
|
||||
Expected: 0b0000000000000000000000000000000000000000000000000000100000000000,
|
||||
},
|
||||
{
|
||||
First: 0b0000000000000000000000000000000000000000000000000000000000000000,
|
||||
// v
|
||||
Second: 0b0000000000000000000000000000000000000000000000000000010000000000,
|
||||
Expected: 0b0000000000000000000000000000000000000000000000000000010000000000,
|
||||
},
|
||||
{
|
||||
First: 0b0000000000000000000000000000000000000000000000000000000000000000,
|
||||
// v
|
||||
Second: 0b0000000000000000000000000000000000000000000000000000001000000000,
|
||||
Expected: 0b0000000000000000000000000000000000000000000000000000001000000000,
|
||||
},
|
||||
{
|
||||
First: 0b0000000000000000000000000000000000000000000000000000000000000000,
|
||||
// v
|
||||
Second: 0b0000000000000000000000000000000000000000000000000000000100000000,
|
||||
Expected: 0b0000000000000000000000000000000000000000000000000000000100000000,
|
||||
},
|
||||
{
|
||||
First: 0b0000000000000000000000000000000000000000000000000000000000000000,
|
||||
// v
|
||||
Second: 0b0000000000000000000000000000000000000000000000000000000010000000,
|
||||
Expected: 0b0000000000000000000000000000000000000000000000000000000010000000,
|
||||
},
|
||||
{
|
||||
First: 0b0000000000000000000000000000000000000000000000000000000000000000,
|
||||
// v
|
||||
Second: 0b0000000000000000000000000000000000000000000000000000000001000000,
|
||||
Expected: 0b0000000000000000000000000000000000000000000000000000000001000000,
|
||||
},
|
||||
{
|
||||
First: 0b0000000000000000000000000000000000000000000000000000000000000000,
|
||||
// v
|
||||
Second: 0b0000000000000000000000000000000000000000000000000000000000100000,
|
||||
Expected: 0b0000000000000000000000000000000000000000000000000000000000100000,
|
||||
},
|
||||
{
|
||||
First: 0b0000000000000000000000000000000000000000000000000000000000000000,
|
||||
// v
|
||||
Second: 0b0000000000000000000000000000000000000000000000000000000000010000,
|
||||
Expected: 0b0000000000000000000000000000000000000000000000000000000000010000,
|
||||
},
|
||||
{
|
||||
First: 0b0000000000000000000000000000000000000000000000000000000000000000,
|
||||
// v
|
||||
Second: 0b0000000000000000000000000000000000000000000000000000000000001000,
|
||||
Expected: 0b0000000000000000000000000000000000000000000000000000000000001000,
|
||||
},
|
||||
{
|
||||
First: 0b0000000000000000000000000000000000000000000000000000000000000000,
|
||||
// v
|
||||
Second: 0b0000000000000000000000000000000000000000000000000000000000000100,
|
||||
Expected: 0b0000000000000000000000000000000000000000000000000000000000000100,
|
||||
},
|
||||
{
|
||||
First: 0b0000000000000000000000000000000000000000000000000000000000000000,
|
||||
// v
|
||||
Second: 0b0000000000000000000000000000000000000000000000000000000000000010,
|
||||
Expected: 0b0000000000000000000000000000000000000000000000000000000000000010,
|
||||
},
|
||||
{
|
||||
First: 0b0000000000000000000000000000000000000000000000000000000000000000,
|
||||
// v
|
||||
Second: 0b0000000000000000000000000000000000000000000000000000000000000001,
|
||||
Expected: 0b0000000000000000000000000000000000000000000000000000000000000001,
|
||||
},
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
{
|
||||
// v v
|
||||
First: 0b0000000000000000000000000100000000000000000000000000000000000001,
|
||||
Second: 0b0000000000000000000000000000000000000000000000000000000000000000,
|
||||
Expected: 0b0100000000000000000000000000000000000001000000000000000000000000,
|
||||
// ^ ^
|
||||
},
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
{
|
||||
First: 0b0000000000000000000000000000000000000000000000000000000000000000,
|
||||
// v v
|
||||
Second: 0b0100000000000000000000001000000000000000000000000000000000000000,
|
||||
Expected: 0b0000000000000000000000000000000000000000000000000000000000000000,
|
||||
},
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
{
|
||||
// v v
|
||||
First: 0b0000000000000000000000000100000000000000000000000000000000000001,
|
||||
// v v
|
||||
Second: 0b0000000000000000000000000000000000000000100000000000000000000001,
|
||||
Expected: 0b0100000000000000000000000000000000000001100000000000000000000001,
|
||||
// ^ ^^ ^
|
||||
},
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
{
|
||||
First: 0b0000000000000000000000000000000000000000000000000000000000000000,
|
||||
Second: 0b0111111111111111111111111111111111111111011111111111111111111111,
|
||||
Expected: 0b0000000000000000000000000000000000000000011111111111111111111111,
|
||||
},
|
||||
{
|
||||
First: 0b0000000000000000000000000000000000000000000000000000000000000000,
|
||||
Second: 0b0111111111111111111111111111111111111111101111111111111111111111,
|
||||
Expected: 0b0000000000000000000000000000000000000000101111111111111111111111,
|
||||
},
|
||||
{
|
||||
First: 0b0000000000000000000000000000000000000000000000000000000000000000,
|
||||
Second: 0b0111111111111111111111111111111111111111110111111111111111111111,
|
||||
Expected: 0b0000000000000000000000000000000000000000110111111111111111111111,
|
||||
},
|
||||
{
|
||||
First: 0b0000000000000000000000000000000000000000000000000000000000000000,
|
||||
Second: 0b0111111111111111111111111111111111111111111011111111111111111111,
|
||||
Expected: 0b0000000000000000000000000000000000000000111011111111111111111111,
|
||||
},
|
||||
{
|
||||
First: 0b0000000000000000000000000000000000000000000000000000000000000000,
|
||||
Second: 0b0111111111111111111111111111111111111111111101111111111111111111,
|
||||
Expected: 0b0000000000000000000000000000000000000000111101111111111111111111,
|
||||
},
|
||||
{
|
||||
First: 0b0000000000000000000000000000000000000000000000000000000000000000,
|
||||
Second: 0b0111111111111111111111111111111111111111111110111111111111111111,
|
||||
Expected: 0b0000000000000000000000000000000000000000111110111111111111111111,
|
||||
},
|
||||
{
|
||||
First: 0b0000000000000000000000000000000000000000000000000000000000000000,
|
||||
Second: 0b0111111111111111111111111111111111111111111111011111111111111111,
|
||||
Expected: 0b0000000000000000000000000000000000000000111111011111111111111111,
|
||||
},
|
||||
{
|
||||
First: 0b0000000000000000000000000000000000000000000000000000000000000000,
|
||||
Second: 0b0111111111111111111111111111111111111111111111101111111111111111,
|
||||
Expected: 0b0000000000000000000000000000000000000000111111101111111111111111,
|
||||
},
|
||||
{
|
||||
First: 0b0000000000000000000000000000000000000000000000000000000000000000,
|
||||
Second: 0b0111111111111111111111111111111111111111111111110111111111111111,
|
||||
Expected: 0b0000000000000000000000000000000000000000111111110111111111111111,
|
||||
},
|
||||
{
|
||||
First: 0b0000000000000000000000000000000000000000000000000000000000000000,
|
||||
Second: 0b0111111111111111111111111111111111111111111111111011111111111111,
|
||||
Expected: 0b0000000000000000000000000000000000000000111111111011111111111111,
|
||||
},
|
||||
{
|
||||
First: 0b0000000000000000000000000000000000000000000000000000000000000000,
|
||||
Second: 0b0111111111111111111111111111111111111111111111111101111111111111,
|
||||
Expected: 0b0000000000000000000000000000000000000000111111111101111111111111,
|
||||
},
|
||||
{
|
||||
First: 0b0000000000000000000000000000000000000000000000000000000000000000,
|
||||
Second: 0b0111111111111111111111111111111111111111111111111110111111111111,
|
||||
Expected: 0b0000000000000000000000000000000000000000111111111110111111111111,
|
||||
},
|
||||
{
|
||||
First: 0b0000000000000000000000000000000000000000000000000000000000000000,
|
||||
Second: 0b0111111111111111111111111111111111111111111111111111011111111111,
|
||||
Expected: 0b0000000000000000000000000000000000000000111111111111011111111111,
|
||||
},
|
||||
{
|
||||
First: 0b0000000000000000000000000000000000000000000000000000000000000000,
|
||||
Second: 0b0111111111111111111111111111111111111111111111111111101111111111,
|
||||
Expected: 0b0000000000000000000000000000000000000000111111111111101111111111,
|
||||
},
|
||||
{
|
||||
First: 0b0000000000000000000000000000000000000000000000000000000000000000,
|
||||
Second: 0b0111111111111111111111111111111111111111111111111111110111111111,
|
||||
Expected: 0b0000000000000000000000000000000000000000111111111111110111111111,
|
||||
},
|
||||
{
|
||||
First: 0b0000000000000000000000000000000000000000000000000000000000000000,
|
||||
Second: 0b0111111111111111111111111111111111111111111111111111111011111111,
|
||||
Expected: 0b0000000000000000000000000000000000000000111111111111111011111111,
|
||||
},
|
||||
{
|
||||
First: 0b0000000000000000000000000000000000000000000000000000000000000000,
|
||||
Second: 0b0111111111111111111111111111111111111111111111111111111101111111,
|
||||
Expected: 0b0000000000000000000000000000000000000000111111111111111101111111,
|
||||
},
|
||||
{
|
||||
First: 0b0000000000000000000000000000000000000000000000000000000000000000,
|
||||
Second: 0b0111111111111111111111111111111111111111111111111111111110111111,
|
||||
Expected: 0b0000000000000000000000000000000000000000111111111111111110111111,
|
||||
},
|
||||
{
|
||||
First: 0b0000000000000000000000000000000000000000000000000000000000000000,
|
||||
Second: 0b0111111111111111111111111111111111111111111111111111111111011111,
|
||||
Expected: 0b0000000000000000000000000000000000000000111111111111111111011111,
|
||||
},
|
||||
{
|
||||
First: 0b0000000000000000000000000000000000000000000000000000000000000000,
|
||||
Second: 0b0111111111111111111111111111111111111111111111111111111111101111,
|
||||
Expected: 0b0000000000000000000000000000000000000000111111111111111111101111,
|
||||
},
|
||||
{
|
||||
First: 0b0000000000000000000000000000000000000000000000000000000000000000,
|
||||
Second: 0b0111111111111111111111111111111111111111111111111111111111110111,
|
||||
Expected: 0b0000000000000000000000000000000000000000111111111111111111110111,
|
||||
},
|
||||
{
|
||||
First: 0b0000000000000000000000000000000000000000000000000000000000000000,
|
||||
Second: 0b0111111111111111111111111111111111111111111111111111111111111011,
|
||||
Expected: 0b0000000000000000000000000000000000000000111111111111111111111011,
|
||||
},
|
||||
{
|
||||
First: 0b0000000000000000000000000000000000000000000000000000000000000000,
|
||||
Second: 0b0111111111111111111111111111111111111111111111111111111111111101,
|
||||
Expected: 0b0000000000000000000000000000000000000000111111111111111111111101,
|
||||
},
|
||||
{
|
||||
First: 0b0000000000000000000000000000000000000000000000000000000000000000,
|
||||
Second: 0b0111111111111111111111111111111111111111111111111111111111111110,
|
||||
Expected: 0b0000000000000000000000000000000000000000111111111111111111111110,
|
||||
},
|
||||
|
||||
|
||||
|
||||
{
|
||||
First: 0b0000000000000000000000000000000000000000000000000000000000000000,
|
||||
Second: 0b0111111111111111111111111111111111111111111111111111111111111111,
|
||||
Expected: 0b0000000000000000000000000000000000000000111111111111111111111111,
|
||||
},
|
||||
|
||||
|
||||
|
||||
{
|
||||
First: 0b0000000000000000000000000111111111111111111111111111111111111111,
|
||||
Second: 0b0000000000000000000000000000000000000000000000000000000000000000,
|
||||
Expected: 0b0111111111111111111111111111111111111111000000000000000000000000,
|
||||
},
|
||||
}
|
||||
|
||||
for testNumber, test := range tests {
|
||||
|
||||
var actual uint64 = compile(test.First, test.Second)
|
||||
if expected := test.Expected; expected != actual {
|
||||
t.Errorf("For test #%d, the actual compiled result if not what was expected.", testNumber)
|
||||
t.Logf("FIRST: %064b", test.First)
|
||||
t.Logf("SECOND: %064b", test.Second)
|
||||
t.Logf("EXPECTED: %064b", expected)
|
||||
t.Logf("ACTUAL: %064b", actual)
|
||||
continue
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,442 @@
|
|||
package iid
|
||||
|
||||
import (
|
||||
"testing"
|
||||
)
|
||||
|
||||
func TestDecompile(t *testing.T) {
|
||||
|
||||
tests := []struct{
|
||||
Value uint64
|
||||
}{
|
||||
{
|
||||
Value: 0b0000000000000000000000000000000000000000000000000000000000000000,
|
||||
},
|
||||
|
||||
|
||||
|
||||
{
|
||||
Value: 0b0000000000000000000000000000000000000000000000000000000000000001,
|
||||
},
|
||||
{
|
||||
Value: 0b0000000000000000000000000000000000000000000000000000000000000010,
|
||||
},
|
||||
{
|
||||
Value: 0b0000000000000000000000000000000000000000000000000000000000000100,
|
||||
},
|
||||
{
|
||||
Value: 0b0000000000000000000000000000000000000000000000000000000000001000,
|
||||
},
|
||||
{
|
||||
Value: 0b0000000000000000000000000000000000000000000000000000000000010000,
|
||||
},
|
||||
{
|
||||
Value: 0b0000000000000000000000000000000000000000000000000000000000100000,
|
||||
},
|
||||
{
|
||||
Value: 0b0000000000000000000000000000000000000000000000000000000001000000,
|
||||
},
|
||||
{
|
||||
Value: 0b0000000000000000000000000000000000000000000000000000000010000000,
|
||||
},
|
||||
{
|
||||
Value: 0b0000000000000000000000000000000000000000000000000000000100000000,
|
||||
},
|
||||
{
|
||||
Value: 0b0000000000000000000000000000000000000000000000000000001000000000,
|
||||
},
|
||||
{
|
||||
Value: 0b0000000000000000000000000000000000000000000000000000010000000000,
|
||||
},
|
||||
{
|
||||
Value: 0b0000000000000000000000000000000000000000000000000000100000000000,
|
||||
},
|
||||
{
|
||||
Value: 0b0000000000000000000000000000000000000000000000000001000000000000,
|
||||
},
|
||||
{
|
||||
Value: 0b0000000000000000000000000000000000000000000000000010000000000000,
|
||||
},
|
||||
{
|
||||
Value: 0b0000000000000000000000000000000000000000000000000100000000000000,
|
||||
},
|
||||
{
|
||||
Value: 0b0000000000000000000000000000000000000000000000001000000000000000,
|
||||
},
|
||||
{
|
||||
Value: 0b0000000000000000000000000000000000000000000000010000000000000000,
|
||||
},
|
||||
{
|
||||
Value: 0b0000000000000000000000000000000000000000000000100000000000000000,
|
||||
},
|
||||
{
|
||||
Value: 0b0000000000000000000000000000000000000000000001000000000000000000,
|
||||
},
|
||||
{
|
||||
Value: 0b0000000000000000000000000000000000000000000010000000000000000000,
|
||||
},
|
||||
{
|
||||
Value: 0b0000000000000000000000000000000000000000000100000000000000000000,
|
||||
},
|
||||
{
|
||||
Value: 0b0000000000000000000000000000000000000000001000000000000000000000,
|
||||
},
|
||||
{
|
||||
Value: 0b0000000000000000000000000000000000000000010000000000000000000000,
|
||||
},
|
||||
{
|
||||
Value: 0b0000000000000000000000000000000000000000100000000000000000000000,
|
||||
},
|
||||
{
|
||||
Value: 0b0000000000000000000000000000000000000001000000000000000000000000,
|
||||
},
|
||||
{
|
||||
Value: 0b0000000000000000000000000000000000000010000000000000000000000000,
|
||||
},
|
||||
{
|
||||
Value: 0b0000000000000000000000000000000000000100000000000000000000000000,
|
||||
},
|
||||
{
|
||||
Value: 0b0000000000000000000000000000000000001000000000000000000000000000,
|
||||
},
|
||||
{
|
||||
Value: 0b0000000000000000000000000000000000010000000000000000000000000000,
|
||||
},
|
||||
{
|
||||
Value: 0b0000000000000000000000000000000000100000000000000000000000000000,
|
||||
},
|
||||
{
|
||||
Value: 0b0000000000000000000000000000000001000000000000000000000000000000,
|
||||
},
|
||||
{
|
||||
Value: 0b0000000000000000000000000000000010000000000000000000000000000000,
|
||||
},
|
||||
{
|
||||
Value: 0b0000000000000000000000000000000100000000000000000000000000000000,
|
||||
},
|
||||
{
|
||||
Value: 0b0000000000000000000000000000001000000000000000000000000000000000,
|
||||
},
|
||||
{
|
||||
Value: 0b0000000000000000000000000000010000000000000000000000000000000000,
|
||||
},
|
||||
{
|
||||
Value: 0b0000000000000000000000000000100000000000000000000000000000000000,
|
||||
},
|
||||
{
|
||||
Value: 0b0000000000000000000000000001000000000000000000000000000000000000,
|
||||
},
|
||||
{
|
||||
Value: 0b0000000000000000000000000010000000000000000000000000000000000000,
|
||||
},
|
||||
{
|
||||
Value: 0b0000000000000000000000000100000000000000000000000000000000000000,
|
||||
},
|
||||
{
|
||||
Value: 0b0000000000000000000000001000000000000000000000000000000000000000,
|
||||
},
|
||||
{
|
||||
Value: 0b0000000000000000000000010000000000000000000000000000000000000000,
|
||||
},
|
||||
{
|
||||
Value: 0b0000000000000000000000100000000000000000000000000000000000000000,
|
||||
},
|
||||
{
|
||||
Value: 0b0000000000000000000001000000000000000000000000000000000000000000,
|
||||
},
|
||||
{
|
||||
Value: 0b0000000000000000000010000000000000000000000000000000000000000000,
|
||||
},
|
||||
{
|
||||
Value: 0b0000000000000000000100000000000000000000000000000000000000000000,
|
||||
},
|
||||
{
|
||||
Value: 0b0000000000000000001000000000000000000000000000000000000000000000,
|
||||
},
|
||||
{
|
||||
Value: 0b0000000000000000010000000000000000000000000000000000000000000000,
|
||||
},
|
||||
{
|
||||
Value: 0b0000000000000000100000000000000000000000000000000000000000000000,
|
||||
},
|
||||
{
|
||||
Value: 0b0000000000000001000000000000000000000000000000000000000000000000,
|
||||
},
|
||||
{
|
||||
Value: 0b0000000000000010000000000000000000000000000000000000000000000000,
|
||||
},
|
||||
{
|
||||
Value: 0b0000000000000100000000000000000000000000000000000000000000000000,
|
||||
},
|
||||
{
|
||||
Value: 0b0000000000001000000000000000000000000000000000000000000000000000,
|
||||
},
|
||||
{
|
||||
Value: 0b0000000000010000000000000000000000000000000000000000000000000000,
|
||||
},
|
||||
{
|
||||
Value: 0b0000000000100000000000000000000000000000000000000000000000000000,
|
||||
},
|
||||
{
|
||||
Value: 0b0000000001000000000000000000000000000000000000000000000000000000,
|
||||
},
|
||||
{
|
||||
Value: 0b0000000010000000000000000000000000000000000000000000000000000000,
|
||||
},
|
||||
{
|
||||
Value: 0b0000000100000000000000000000000000000000000000000000000000000000,
|
||||
},
|
||||
{
|
||||
Value: 0b0000001000000000000000000000000000000000000000000000000000000000,
|
||||
},
|
||||
{
|
||||
Value: 0b0000010000000000000000000000000000000000000000000000000000000000,
|
||||
},
|
||||
{
|
||||
Value: 0b0000100000000000000000000000000000000000000000000000000000000000,
|
||||
},
|
||||
{
|
||||
Value: 0b0001000000000000000000000000000000000000000000000000000000000000,
|
||||
},
|
||||
{
|
||||
Value: 0b0010000000000000000000000000000000000000000000000000000000000000,
|
||||
},
|
||||
{
|
||||
Value: 0b0100000000000000000000000000000000000000000000000000000000000000,
|
||||
},
|
||||
|
||||
|
||||
|
||||
|
||||
{
|
||||
Value: 0b0111111111111111111111111111111111111111111111111111111111111110,
|
||||
},
|
||||
{
|
||||
Value: 0b0111111111111111111111111111111111111111111111111111111111111101,
|
||||
},
|
||||
{
|
||||
Value: 0b0111111111111111111111111111111111111111111111111111111111111011,
|
||||
},
|
||||
{
|
||||
Value: 0b0111111111111111111111111111111111111111111111111111111111110111,
|
||||
},
|
||||
{
|
||||
Value: 0b0111111111111111111111111111111111111111111111111111111111101111,
|
||||
},
|
||||
{
|
||||
Value: 0b0111111111111111111111111111111111111111111111111111111111011111,
|
||||
},
|
||||
{
|
||||
Value: 0b0111111111111111111111111111111111111111111111111111111110111111,
|
||||
},
|
||||
{
|
||||
Value: 0b0111111111111111111111111111111111111111111111111111111101111111,
|
||||
},
|
||||
{
|
||||
Value: 0b0111111111111111111111111111111111111111111111111111111011111111,
|
||||
},
|
||||
{
|
||||
Value: 0b0111111111111111111111111111111111111111111111111111110111111111,
|
||||
},
|
||||
{
|
||||
Value: 0b0111111111111111111111111111111111111111111111111111101111111111,
|
||||
},
|
||||
{
|
||||
Value: 0b0111111111111111111111111111111111111111111111111111011111111111,
|
||||
},
|
||||
{
|
||||
Value: 0b0111111111111111111111111111111111111111111111111110111111111111,
|
||||
},
|
||||
{
|
||||
Value: 0b0111111111111111111111111111111111111111111111111101111111111111,
|
||||
},
|
||||
{
|
||||
Value: 0b0111111111111111111111111111111111111111111111111011111111111111,
|
||||
},
|
||||
{
|
||||
Value: 0b0111111111111111111111111111111111111111111111110111111111111111,
|
||||
},
|
||||
{
|
||||
Value: 0b0111111111111111111111111111111111111111111111101111111111111111,
|
||||
},
|
||||
{
|
||||
Value: 0b0111111111111111111111111111111111111111111111011111111111111111,
|
||||
},
|
||||
{
|
||||
Value: 0b0111111111111111111111111111111111111111111110111111111111111111,
|
||||
},
|
||||
{
|
||||
Value: 0b0111111111111111111111111111111111111111111101111111111111111111,
|
||||
},
|
||||
{
|
||||
Value: 0b0111111111111111111111111111111111111111111011111111111111111111,
|
||||
},
|
||||
{
|
||||
Value: 0b0111111111111111111111111111111111111111110111111111111111111111,
|
||||
},
|
||||
{
|
||||
Value: 0b0111111111111111111111111111111111111111101111111111111111111111,
|
||||
},
|
||||
{
|
||||
Value: 0b0111111111111111111111111111111111111111011111111111111111111111,
|
||||
},
|
||||
{
|
||||
Value: 0b0111111111111111111111111111111111111110111111111111111111111111,
|
||||
},
|
||||
{
|
||||
Value: 0b0111111111111111111111111111111111111101111111111111111111111111,
|
||||
},
|
||||
{
|
||||
Value: 0b0111111111111111111111111111111111111011111111111111111111111111,
|
||||
},
|
||||
{
|
||||
Value: 0b0111111111111111111111111111111111110111111111111111111111111111,
|
||||
},
|
||||
{
|
||||
Value: 0b0111111111111111111111111111111111101111111111111111111111111111,
|
||||
},
|
||||
{
|
||||
Value: 0b0111111111111111111111111111111111011111111111111111111111111111,
|
||||
},
|
||||
{
|
||||
Value: 0b0111111111111111111111111111111110111111111111111111111111111111,
|
||||
},
|
||||
{
|
||||
Value: 0b0111111111111111111111111111111101111111111111111111111111111111,
|
||||
},
|
||||
{
|
||||
Value: 0b0111111111111111111111111111111011111111111111111111111111111111,
|
||||
},
|
||||
{
|
||||
Value: 0b0111111111111111111111111111110111111111111111111111111111111111,
|
||||
},
|
||||
{
|
||||
Value: 0b0111111111111111111111111111101111111111111111111111111111111111,
|
||||
},
|
||||
{
|
||||
Value: 0b0111111111111111111111111111011111111111111111111111111111111111,
|
||||
},
|
||||
{
|
||||
Value: 0b0111111111111111111111111110111111111111111111111111111111111111,
|
||||
},
|
||||
{
|
||||
Value: 0b0111111111111111111111111101111111111111111111111111111111111111,
|
||||
},
|
||||
{
|
||||
Value: 0b0111111111111111111111111011111111111111111111111111111111111111,
|
||||
},
|
||||
{
|
||||
Value: 0b0111111111111111111111110111111111111111111111111111111111111111,
|
||||
},
|
||||
{
|
||||
Value: 0b0111111111111111111111101111111111111111111111111111111111111111,
|
||||
},
|
||||
{
|
||||
Value: 0b0111111111111111111111011111111111111111111111111111111111111111,
|
||||
},
|
||||
{
|
||||
Value: 0b0111111111111111111110111111111111111111111111111111111111111111,
|
||||
},
|
||||
{
|
||||
Value: 0b0111111111111111111101111111111111111111111111111111111111111111,
|
||||
},
|
||||
{
|
||||
Value: 0b0111111111111111111011111111111111111111111111111111111111111111,
|
||||
},
|
||||
{
|
||||
Value: 0b0111111111111111110111111111111111111111111111111111111111111111,
|
||||
},
|
||||
{
|
||||
Value: 0b0111111111111111101111111111111111111111111111111111111111111111,
|
||||
},
|
||||
{
|
||||
Value: 0b0111111111111111011111111111111111111111111111111111111111111111,
|
||||
},
|
||||
{
|
||||
Value: 0b0111111111111110111111111111111111111111111111111111111111111111,
|
||||
},
|
||||
{
|
||||
Value: 0b0111111111111101111111111111111111111111111111111111111111111111,
|
||||
},
|
||||
{
|
||||
Value: 0b0111111111111011111111111111111111111111111111111111111111111111,
|
||||
},
|
||||
{
|
||||
Value: 0b0111111111110111111111111111111111111111111111111111111111111111,
|
||||
},
|
||||
{
|
||||
Value: 0b0111111111101111111111111111111111111111111111111111111111111111,
|
||||
},
|
||||
{
|
||||
Value: 0b0111111111011111111111111111111111111111111111111111111111111111,
|
||||
},
|
||||
{
|
||||
Value: 0b0111111110111111111111111111111111111111111111111111111111111111,
|
||||
},
|
||||
{
|
||||
Value: 0b0111111101111111111111111111111111111111111111111111111111111111,
|
||||
},
|
||||
{
|
||||
Value: 0b0111111011111111111111111111111111111111111111111111111111111111,
|
||||
},
|
||||
{
|
||||
Value: 0b0111110111111111111111111111111111111111111111111111111111111111,
|
||||
},
|
||||
{
|
||||
Value: 0b0111101111111111111111111111111111111111111111111111111111111111,
|
||||
},
|
||||
{
|
||||
Value: 0b0111011111111111111111111111111111111111111111111111111111111111,
|
||||
},
|
||||
{
|
||||
Value: 0b0110111111111111111111111111111111111111111111111111111111111111,
|
||||
},
|
||||
{
|
||||
Value: 0b0101111111111111111111111111111111111111111111111111111111111111,
|
||||
},
|
||||
{
|
||||
Value: 0b0011111111111111111111111111111111111111111111111111111111111111,
|
||||
},
|
||||
|
||||
|
||||
|
||||
{
|
||||
Value: 0b0111111111111111111111111111111111111111111111111111111111111111,
|
||||
},
|
||||
|
||||
|
||||
|
||||
|
||||
{
|
||||
Value: 0b0000000000000000000000000000000000000000100000000000000000000001,
|
||||
},
|
||||
|
||||
|
||||
|
||||
{
|
||||
Value: 0b0100000000000000000000000000000000000001000000000000000000000000,
|
||||
},
|
||||
|
||||
|
||||
|
||||
{
|
||||
Value: 0b0100000000000000000000000000000000000001100000000000000000000001,
|
||||
},
|
||||
}
|
||||
|
||||
for testNumber, test := range tests {
|
||||
|
||||
first, second := decompile(test.Value)
|
||||
|
||||
actual := compile(first, second)
|
||||
|
||||
if expected := test.Value; expected != actual {
|
||||
t.Errorf("For test #%d, the actual re-compiled value of the decompiled values is not what was expected.", testNumber)
|
||||
t.Logf("EXPECTED: %064b", expected)
|
||||
t.Logf("ACTUAL: %064b", actual)
|
||||
t.Logf("FIRST %064b", first)
|
||||
t.Logf("SECOND %064b", second)
|
||||
continue
|
||||
}
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue