package basics.string;

import basics.testing.Test;

public class SB
{
StringBuilder s = null;

public SB()
{
   s = new StringBuilder();
}

public void clear()
{
   s = new StringBuilder();
}

public SB add(Object...values)
{
   for(Object obj : values)
      add(obj);
   return this;
}

public SB add(boolean b)
{
   s.append(b);
   return this;
}

public SB add(char c)
{
   s.append(c);
   return this;
}

public SB add(char [] str, int offset, int len)
{
   s.append(str, offset, len);
   return this;
}

public SB add(char [] str)
{
   s.append(str);
   return this;
}

public SB add(double d)
{
   s.append(d);
   return this;
}

public SB add(float f)
{
   s.append(f);
   return this;
}

public SB add(int i)
{
   s.append(i);
   return this;
}

public SB add(long lng)
{
   s.append(lng);
   return this;
}

public SB add(Object obj)
{
   s.append(obj);
   return this;
}

public SB add(String str)
{
   s.append(str);
   return this;
}

public SB add(StringBuffer sb)
{
   s.append(sb);
   return this;
}

public SB addCodePoint(int codePoint)
{
   s.appendCodePoint(codePoint);
   return this;
}

public int length()
{
   return s.length();
}

public String get()
{
   return s.toString();
}

public String get(String end)
{
   return s.append(end).toString();
}

public String toString()
{
   return s.toString();
}

public static void unittest()
{
   SB s = new SB().add(true).add("string").add(100).add(new Character('a'), new Character('b'))
      .add(1.25);
   Test.assertEqualsTrue(s.get(), "truestring100ab1.25", "wrong result");
}
}
