OpenCores
URL https://opencores.org/ocsvn/openrisc/openrisc/trunk

Subversion Repositories openrisc

[/] [openrisc/] [trunk/] [gnu-dev/] [or1k-gcc/] [gcc/] [testsuite/] [go.test/] [test/] [bigalg.go] - Rev 700

Compare with Previous | Blame | View Log

// $G $D/$F.go && $L $F.$A && ./$A.out

// Copyright 2009 The Go Authors. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.

package main

type T struct {
        a float64
        b int64
        c string
        d byte
}

var a = []int{ 1, 2, 3 }
var NIL []int

func arraycmptest() {
        if NIL != nil {
                println("fail1:", NIL, "!= nil")
        }
        if nil != NIL {
                println("fail2: nil !=", NIL)
        }
        if a == nil || nil == a {
                println("fail3:", a, "== nil")
        }
}

func SameArray(a, b []int) bool {
        if len(a) != len(b) || cap(a) != cap(b) {
                return false
        }
        if len(a) > 0 && &a[0] != &b[0] {
                return false
        }
        return true
}

var t = T{1.5, 123, "hello", 255}
var mt = make(map[int]T)
var ma = make(map[int][]int)

func maptest() {
        mt[0] = t
        t1 := mt[0]
        if t1.a != t.a || t1.b != t.b || t1.c != t.c || t1.d != t.d {
                println("fail: map val struct", t1.a, t1.b, t1.c, t1.d)
        }

        ma[1] = a
        a1 := ma[1]
        if !SameArray(a, a1) {
                println("fail: map val array", a, a1)
        }
}

var ct = make(chan T)
var ca = make(chan []int)

func send() {
        ct <- t
        ca <- a
}

func chantest() {
        go send()

        t1 := <-ct
        if t1.a != t.a || t1.b != t.b || t1.c != t.c || t1.d != t.d {
                println("fail: map val struct", t1.a, t1.b, t1.c, t1.d)
        }

        a1 := <-ca
        if !SameArray(a, a1) {
                println("fail: map val array", a, a1)
        }
}

type E struct { }
var e E

func interfacetest() {
        var i interface{}

        i = a
        a1 := i.([]int)
        if !SameArray(a, a1) {
                println("interface <-> []int", a, a1)
        }
        pa := new([]int)
        *pa = a
        i = pa
        a1 = *i.(*[]int)
        if !SameArray(a, a1) {
                println("interface <-> *[]int", a, a1)
        }

        i = t
        t1 := i.(T)
        if t1.a != t.a || t1.b != t.b || t1.c != t.c || t1.d != t.d {
                println("interface <-> struct", t1.a, t1.b, t1.c, t1.d)
        }

        i = e
        e1 := i.(E)
        // nothing to check; just verify it doesn't crash
        _ = e1
}

func main() {
        arraycmptest()
        maptest()
        chantest()
        interfacetest()
}

Compare with Previous | Blame | View Log

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.