github.com/llvm-mirror/llgo@v0.0.0-20190322182713-bf6f0a60fce1/test/execution/strings/runetostring.go (about)

     1  // RUN: llgo -o %t %s
     2  // RUN: %t 2>&1 | FileCheck %s
     3  
     4  // CHECK: test( 46 )
     5  // CHECK-NEXT: .
     6  // CHECK-NEXT: 46
     7  // CHECK-NEXT: 0 46
     8  // CHECK-NEXT: test( 169 )
     9  // CHECK-NEXT: ©
    10  // CHECK-NEXT: 194
    11  // CHECK-NEXT: 169
    12  // CHECK-NEXT: 0 169
    13  // CHECK-NEXT: test( 8364 )
    14  // CHECK-NEXT: €
    15  // CHECK-NEXT: 226
    16  // CHECK-NEXT: 130
    17  // CHECK-NEXT: 172
    18  // CHECK-NEXT: 0 8364
    19  // CHECK-NEXT: test( 66560 )
    20  // CHECK-NEXT: 𐐀
    21  // CHECK-NEXT: 240
    22  // CHECK-NEXT: 144
    23  // CHECK-NEXT: 144
    24  // CHECK-NEXT: 128
    25  // CHECK-NEXT: 0 66560
    26  // CHECK-NEXT: .©€𐐀
    27  // CHECK-NEXT: 4 4 4
    28  // CHECK-NEXT: true
    29  // CHECK-NEXT: true
    30  // CHECK-NEXT: true
    31  // CHECK-NEXT: true
    32  // CHECK-NEXT: true
    33  // CHECK-NEXT: true
    34  // CHECK-NEXT: true
    35  // CHECK-NEXT: true
    36  
    37  package main
    38  
    39  func test(r rune) {
    40  	println("test(", r, ")")
    41  	s := string(r)
    42  	println(s)
    43  	for i := 0; i < len(s); i++ {
    44  		println(s[i])
    45  	}
    46  	for i, r := range s {
    47  		println(i, r)
    48  	}
    49  }
    50  
    51  type namedRune rune
    52  
    53  func testslice(r1 []rune) {
    54  	s := string(r1)
    55  	println(s)
    56  	r2 := []rune(s)
    57  	r3 := []namedRune(s)
    58  	println(len(r1), len(r2), len(r3))
    59  	if len(r2) == len(r1) && len(r3) == len(r1) {
    60  		for i := range r2 {
    61  			println(r1[i] == r2[i])
    62  			println(r1[i] == rune(r3[i]))
    63  		}
    64  	}
    65  }
    66  
    67  func main() {
    68  	var runes = []rune{'.', '©', '€', '𐐀'}
    69  	test(runes[0])
    70  	test(runes[1])
    71  	test(runes[2])
    72  	test(runes[3])
    73  	testslice(runes)
    74  }