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

/// @assertion void write(Object obj)
/// Adds the contents of obj, converted to a string, to the buffer.
/// @description Tries to pass null or an object that isn't a String as argument,
/// correct string conversion expected ("null" in case of null)
/// @author msyabro

import "../../../Utils/expect.dart";

main() {
  StringBuffer sb = new StringBuffer();
  sb.write(null);
  Expect.equals("null", sb.toString());
  sb.write(1);
  Expect.equals("null1", sb.toString());
  sb.write(true);
  Expect.equals("null1true", sb.toString());
}
