// Copyright (c) 2011, 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";

void main() {
  Expect.equals("abcd", r"abcd");
  Expect.equals("", r"");
  Expect.equals("", r'');
  Expect.equals("", r"""""");
  Expect.equals("", r'''''');
  Expect.equals("''''", r"''''");
  Expect.equals('""""', r'""""');
  Expect.equals("1\n2\n3", r"""1
2
3""");
  Expect.equals("1\n2\n3", r'''1
2
3''');
  Expect.equals("1", r"""
1""");
  Expect.equals("1", r'''
1''');
  Expect.equals("'", r"'");
  Expect.equals('"', r'"');
  Expect.equals("1", r"1");
  Expect.equals("1", r"1");
  Expect.equals("\$", r"$");
  Expect.equals("\\", r"\");
  Expect.equals("\\", r'\');
  Expect.equals("\${12}", r"${12}");
  Expect.equals(
    "\\a\\b\\c\\d\\e\\f\\g\\h\\i\\j\\k\\l\\m",
    r"\a\b\c\d\e\f\g\h\i\j\k\l\m",
  );
  Expect.equals(
    "\\n\\o\\p\\q\\r\\s\\t\\u\\v\\w\\x\\y\\z",
    r"\n\o\p\q\r\s\t\u\v\w\x\y\z",
  );
}
