Home | History | Annotate | Download | only in ken
      1 // cmpout
      2 
      3 // Copyright 2009 The Go Authors. All rights reserved.
      4 // Use of this source code is governed by a BSD-style
      5 // license that can be found in the LICENSE file.
      6 
      7 // Test string operations including printing.
      8 
      9 package main
     10 
     11 func main() {
     12 	var c string
     13 
     14 	a := `abc`
     15 	b := `xyz`
     16 
     17 	/* print a literal */
     18 	print(`abc`)
     19 
     20 	/* print a variable */
     21 	print(b, "-")
     22 
     23 	/* catenate literals */
     24 	print(`abc`+`xyz`, "-")
     25 
     26 	/* catenate variables */
     27 	print(a+b, "-")
     28 
     29 	/* compare literals */
     30 	if `abc` == `xyz` || `abc` != "abc" || `abc` > `xyz` {
     31 		panic("compare literals")
     32 	}
     33 
     34 	/* compare variables */
     35 	if a == b || a != a || a > b {
     36 		panic("compare variables")
     37 	}
     38 
     39 	/* cat */
     40 	c = a + b
     41 	print(c, "-")
     42 
     43 	/* catequal */
     44 	c = a
     45 	c += b
     46 	print(c, "-")
     47 
     48 	/* clumsy evaluation */
     49 	c = b
     50 	c = a + c
     51 	print(c, "-")
     52 
     53 	/* len */
     54 	if len(c) != 6 {
     55 		print("len ", len(c))
     56 		panic("fail")
     57 	}
     58 
     59 	/* index strings */
     60 	for i := 0; i < len(c); i = i + 1 {
     61 		if c[i] != (a + b)[i] {
     62 			print("index ", i, " ", c[i], " ", (a + b)[i])
     63 			panic("fail")
     64 		}
     65 	}
     66 
     67 	/* slice strings */
     68 	print(c[0:3], c[3:])
     69 
     70 	print("\n")
     71 
     72 	/* create string with integer constant */
     73 	c = string('x')
     74 	if c != "x" {
     75 		panic("create int " + c)
     76 	}
     77 
     78 	/* create string with integer variable */
     79 	v := 'x'
     80 	c = string(v)
     81 	if c != "x" {
     82 		panic("create int " + c)
     83 	}
     84 
     85 	/* create string with byte array */
     86 	var z1 [3]byte
     87 	z1[0] = 'a'
     88 	z1[1] = 'b'
     89 	z1[2] = 'c'
     90 	c = string(z1[0:])
     91 	if c != "abc" {
     92 		panic("create byte array " + c)
     93 	}
     94 
     95 	/* create string with int array */
     96 	var z2 [3]rune
     97 	z2[0] = 'a'
     98 	z2[1] = '\u1234'
     99 	z2[2] = 'c'
    100 	c = string(z2[0:])
    101 	if c != "a\u1234c" {
    102 		panic("create int array " + c)
    103 	}
    104 
    105 	/* create string with byte array pointer */
    106 	z3 := new([3]byte)
    107 	z3[0] = 'a'
    108 	z3[1] = 'b'
    109 	z3[2] = 'c'
    110 	c = string(z3[0:])
    111 	if c != "abc" {
    112 		panic("create array pointer " + c)
    113 	}
    114 }
    115