// runoutput

// Copyright 2011 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.

// Test source files and strings containing \r and \r\n.

package main

import (
	"fmt"
	"strings"
)

func main() {
	prog = strings.Replace(prog, "BQ", "`", -1)
	prog = strings.Replace(prog, "CR", "\r", -1)
	fmt.Print(prog)
}

var prog = `
package main
CR

import "fmt"

var CR s = "hello\n" + CR
	" world"CR

var t = BQhelloCR
 worldBQ

var u = BQhCReCRlCRlCRoCR
 worldBQ

var golden = "hello\n world"

func main() {
	if s != golden {
		fmt.Printf("s=%q, want %q", s, golden)
	}
	if t != golden {
		fmt.Printf("t=%q, want %q", t, golden)
	}
	if u != golden {
		fmt.Printf("u=%q, want %q", u, golden)
	}
}
`
