// $G $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

import(
        "fmt";
        "utf8";
)

func main() {
	s := "\000\123\x00\xca\xFE\u0123\ubabe\U0000babe\U0010FFFFx";
	expect := []int{ 0, 0123, 0, 0xFFFD, 0xFFFD, 0x123, 0xbabe, 0xbabe, 0x10FFFF, 'x' };
	var rune, size int;
	offset := 0;
	var i, c int;
	ok := true;
	cnum := 0;
	for i, c = range s {
		rune, size := utf8.DecodeRuneInString(s, i);  // check it another way
		if i != offset {
			fmt.Printf("unexpected offset %d not %d\n", i, offset);
			ok = false;
		}
		if rune != expect[cnum] {
			fmt.Printf("unexpected rune %d from DecodeRuneInString: %x not %x\n", i, rune, expect[cnum]);
			ok = false;
		}
		if c != expect[cnum] {
			fmt.Printf("unexpected rune %d from range: %x not %x\n", i, rune, expect[cnum]);
			ok = false;
		}
		offset += size;
		cnum++;
	}
	if i != len(s)-1 {
		fmt.Println("after loop i is", i, "not", len(s)-1);
		ok = false;
	}

	i = 12345;
	c = 23456;
	for i, c = range "" {
	}
	if i != 12345 {
		fmt.Println("range empty string assigned to index:", i);
		ok = false;
	}
	if c != 23456 {
		fmt.Println("range empty string assigned to value:", c);
		ok = false;
	}

	if !ok {
		fmt.Println("BUG: stringrange");
		sys.Exit(1)
	}
}
