blob: 74f4095c0093aa702130b89148c3a86e8efbfc9c [file] [log] [blame]
// RUNNABLE_PHOBOS_TEST
// PERMUTE_ARGS:
import std.stdio;
import std.string;
/*************************************************************/
void test1()
{
double x = 1e6;
float f;
double d;
real r;
while (x > 1e-5)
{ double y = x / 101.0;
std.stdio.writef("x = %g\t%f\t%e\n",x/101.0,x/101.0,x/101.0);
x /= 10.0;
}
double a = 123456789.0;
for (int i = 20; i--; a /= 10)
std.stdio.writef("%20.6g|%20.6e|%20.6f\n",a,a,a);
std.stdio.writef("%e %e %e %e\n",float.nan,double.nan,real.nan,double.infinity);
std.stdio.writef("%e %e %e\n",-float.nan,-double.nan,-double.infinity);
std.stdio.writef("%-5E %5E %E\n",float.nan,double.nan,double.infinity);
std.stdio.writef("%f %f %f\n",float.nan,double.nan,double.infinity);
std.stdio.writef("%f %f %f\n",-float.nan,-double.nan,-double.infinity);
std.stdio.writef("%+F %+ F %F\n",float.nan,double.nan,double.infinity);
std.stdio.writef("%g %g %g\n",float.nan,double.nan,double.infinity);
std.stdio.writef("%g %g %g\n",-float.nan,-double.nan,-double.infinity);
std.stdio.writef("% G %G %G\n",float.nan,double.nan,double.infinity);
r = 0x1.AAp+3L;
std.stdio.writef(" r = %g\n", r);
std.stdio.writef(" r = %a\n", r);
std.stdio.writef(" r = %A\n", r);
d = 0x1.AAp+3;
std.stdio.writef(" d = %.5a\n", d);
std.stdio.writef(" d = %A\n", d);
f = 0x1.AAp+3f;
std.stdio.writef(" f = %a\n", f);
std.stdio.writef(" f = %A\n", f);
f = 0x1.FFp+3f;
std.stdio.writef(" f = %.1a\n", f);
std.stdio.writef(" f = %A\n", f);
r = 0;
std.stdio.writef(" r = %a\n", r);
std.stdio.writef(" r = %A\n", r);
std.stdio.writef("%e\n", 1e+300);
std.stdio.writef("%.0f\n%.307f\n", 1e+300, 1e-300);
std.stdio.writef("%.0A\n%.307A\n", 1e+300, 1e-300);
}
/*************************************************************/
void test2()
{
writefln("%o", 9);
assert(std.string.format("%o", 9) == "11");
assert(std.string.format("%o", 10) == "12");
assert(std.string.format("%b", 9) == "1001");
assert(std.string.format("%b", 10) == "1010");
}
/*************************************************************/
void test3()
{
Object e = new Exception("hello");
writeln(e.toString());
//assert(e.toString() == "object.Exception: hello");
//assert(format(e) == "object.Exception: hello");
alias char[] xstring;
assert(format(cast(xstring)"world") == "world");
}
/*************************************************************/
void test4()
{
const char[][] x = ["%s","123"];
writeln(x);
assert(std.string.format("%s", x) == `["%s", "123"]`);
}
/*************************************************************/
void test5()
{
int[int] foo;
foo[1] = 2;
foo[7] = 28;
writefln("%s", foo);
void[0] v;
assert(format("%s", v) == "[]");
}
/*************************************************************/
int main()
{
test1();
test2();
test3();
test4();
test5();
std.stdio.writefln("Success");
return 0;
}