|  | // Copyright (c) 2014, the Dart project authors.  Please see the AUTHORS file | 
|  | // for details. All rights reserved. Use of this source code is governed by a | 
|  | // BSD-style license that can be found in the LICENSE file. | 
|  |  | 
|  | import "package:expect/expect.dart"; | 
|  | import 'package:compiler/src/util/command_line.dart'; | 
|  |  | 
|  | main() { | 
|  | Expect.listEquals(["foo", "bar"], splitLine("foo bar")); | 
|  | Expect.listEquals(["foo", "bar"], splitLine("foo bar", windows: true)); | 
|  |  | 
|  | Expect.listEquals(["foo bar"], splitLine(r"foo\ bar")); | 
|  | Expect.listEquals(["foo\\", "bar"], splitLine(r"foo\ bar", windows: true)); | 
|  |  | 
|  | Expect.listEquals(["foo'", '"bar'], splitLine(r"""foo\' \"bar""")); | 
|  | Expect.listEquals( | 
|  | ["foo\\'", '"bar'], splitLine(r"""foo\' \"bar""", windows: true)); | 
|  |  | 
|  | Expect.listEquals(["foo'", '"bar'], splitLine(r"""foo"'" '"'bar""")); | 
|  | Expect.throws(() => splitLine(r"""foo"'" '"'bar""", windows: true), | 
|  | (e) => e is FormatException); | 
|  | Expect.listEquals( | 
|  | ["foo'", "''bar"], splitLine(r"""foo"'" '"'bar" """, windows: true)); | 
|  |  | 
|  | Expect.listEquals(["foo", "bar"], splitLine("'f''o''o' " + '"b""a""r"')); | 
|  | // TODO(johnniwinther): This is not actual Windows behavior: "b""a" is | 
|  | // interpreted as b"a but "b""a""r" is interpreted as b"ar. | 
|  | Expect.listEquals(["'f''o''o'", "bar"], | 
|  | splitLine("'f''o''o' " + '"b""a""r"', windows: true)); | 
|  |  | 
|  | Expect.listEquals( | 
|  | ["\n", "\r", "\t", "\b", "\f", "\v", "\\", "a", "Z", "-", '"', "'"], | 
|  | splitLine(r"""\n \r \t \b \f \v \\ \a \Z \- \" \'""")); | 
|  | Expect.listEquals([ | 
|  | "\\n", | 
|  | "\\r", | 
|  | "\\t", | 
|  | "\\b", | 
|  | "\\f", | 
|  | "\\v", | 
|  | "\\", | 
|  | "\\a", | 
|  | "\\Z", | 
|  | "\\-", | 
|  | '"', | 
|  | "\\'" | 
|  | ], splitLine(r"""\n \r \t \b \f \v \\ \a \Z \- \" \'""", windows: true)); | 
|  | Expect.listEquals( | 
|  | ["C:Users\foo\bar\baz.dart"], splitLine(r"C:\Users\foo\bar\baz.dart")); | 
|  | Expect.listEquals([r"C:\Users\foo\bar\baz.dart"], | 
|  | splitLine(r"C:\Users\foo\bar\baz.dart", windows: true)); | 
|  |  | 
|  | Expect.listEquals(["C:Users\foo\bar\name with spaces.dart"], | 
|  | splitLine(r'"C:\Users\foo\bar\name with spaces.dart"')); | 
|  | Expect.listEquals([r"C:\Users\foo\bar\name with spaces.dart"], | 
|  | splitLine(r'"C:\Users\foo\bar\name with spaces.dart"', windows: true)); | 
|  |  | 
|  | Expect.throws(() => splitLine(r"\"), (e) => e is FormatException); | 
|  | Expect.throws( | 
|  | () => splitLine(r"\", windows: true), (e) => e is FormatException); | 
|  | } |