Добавил команду с выдачей погоды

This commit is contained in:
ftc
2021-04-08 22:35:23 +03:00
parent 41269da76c
commit 91b4b069f4
4 changed files with 917 additions and 10 deletions
+241
View File
@@ -0,0 +1,241 @@
#if TEST
using System;
using NUnit.Framework;
namespace printf {
[TestFixture]
public class FormatTest {
string decSep = System.Globalization.NumberFormatInfo.CurrentInfo.CurrencyDecimalSeparator;
[Test]
public void TestTypes() {
//Test the basic data types
Assert.AreEqual("b",
Printf.sprintf("%c", 'b'));
Assert.AreEqual("121",
Printf.sprintf("%d", 121));
Assert.AreEqual("-34",
Printf.sprintf("%i", -34));
Assert.AreEqual("3.123400e+002",
Printf.sprintf("%e", 3.1234e02));
Assert.AreEqual("3.123400E+002",
Printf.sprintf("%E", 3.1234e02));
Assert.AreEqual("3.123000",
Printf.sprintf("%f", 3.123));
Assert.AreEqual("610",
Printf.sprintf("%o", Convert.ToInt32("0610", 8)));
Assert.AreEqual("asdfjkl",
Printf.sprintf("%s", "asdfjkl"));
Assert.AreEqual("4567",
Printf.sprintf("%u", 4567));
Assert.AreEqual("deadf00d",
Printf.sprintf("%x", unchecked((int)0xdeadf00d)));
Assert.AreEqual("DEADF00D",
Printf.sprintf("%X", unchecked((int)0xdeadf00d)));
Assert.IsNotEmpty(Printf.sprintf("%p", new object()));
Assert.Throws<NotSupportedException>(delegate() {
Printf.sprintf("%n", new IntPtr());
});
//Invalid format string
Assert.Throws<ArgumentException>(delegate() {
Printf.sprintf("%z", new IntPtr());
});
Assert.AreEqual("%",
Printf.sprintf("%%"));
}
[Test]
public void TestStaticText() {
//Static text
Assert.AreEqual("aaaa",
Printf.sprintf("aaaa"));
//Param at the end
Assert.AreEqual("Hello World",
Printf.sprintf("Hello %s", "World"));
//Param at the beginning
Assert.AreEqual("Hello World!",
Printf.sprintf("%s World!", "Hello"));
//Param in the middle
Assert.AreEqual("a 1 b",
Printf.sprintf("a %d b", 1));
//Multiple params
Assert.AreEqual("Hello World!",
Printf.sprintf("%s %s!", "Hello", "World"));
}
[Test]
public void TestArgumentCount() {
//More arguments should not cause errors
Assert.DoesNotThrow(delegate() {
Printf.sprintf("%d %d", 1, 2, 3);
});
//Less arguments should raise error
Assert.Throws<ArgumentException>(delegate() {
Printf.sprintf("%d %d", 1);
});
//Also check for the extra arguments required for *
Assert.Throws<ArgumentException>(delegate() {
Printf.sprintf("%*d", 1);
});
Assert.Throws<ArgumentException>(delegate() {
Printf.sprintf("%.*d", 1);
});
Assert.Throws<ArgumentException>(delegate() {
Printf.sprintf("%*.*d", 1, 2);
});
Assert.DoesNotThrow(delegate() {
Printf.sprintf("%*.*d", 1, 2, 3);
});
}
[Test]
public void TestPadding() {
//Simple padding
Assert.AreEqual(" 33",
Printf.sprintf("%5d", 33));
//More padding than required
Assert.AreEqual("123456",
Printf.sprintf("%4d", 123456));
//Left-align
Assert.AreEqual("888 ",
Printf.sprintf("%-5d", 888));
//Pad with zeros
Assert.AreEqual("0043, 00zz",
Printf.sprintf("%04d, %04s", 43, "zz"));
//Left align always pads with spaces
Assert.AreEqual("123 ",
Printf.sprintf("%-05d", 123));
//Width specified on the argument list
Assert.AreEqual(" 11",
Printf.sprintf("%*d", 6, 11));
//Sign with padding
Assert.AreEqual(" -1 -0001 0001",
Printf.sprintf("%5d %05d % 05d", -1, -1, 1));
}
[Test]
public void TestSign() {
//Sign of number
Assert.AreEqual("-5",
Printf.sprintf("%d", -5));
//Positive signs
Assert.AreEqual("3 +4",
Printf.sprintf("%d %+d", 3, 4));
//Sign is not printed for o x and X
Assert.AreEqual("610 ffffffff FFFFFFFF",
Printf.sprintf("%+o %+x %+X", Convert.ToInt32("0610", 8), -1, -1));
//Insert space if there is no sign
Assert.AreEqual("-11 22",
Printf.sprintf("% d % d", -11, 22));
}
[Test]
public void TestPrecision() {
//INTEGERS: minimum number of digits
Assert.AreEqual("123",
Printf.sprintf("%.2d", 123));
Assert.AreEqual("ff",
Printf.sprintf("%.1x", 0xff));
//Padding with 0
Assert.AreEqual("0044",
Printf.sprintf("%.4d", 44));
Assert.AreEqual("000FF",
Printf.sprintf("%.5X", 0xff));
Assert.AreEqual("003",
Printf.sprintf("%.3u", 3));
Assert.AreEqual("0010",
Printf.sprintf("%.4o", 8));
//Sign is not included:
Assert.AreEqual("-01",
Printf.sprintf("%.2d", -1));
//Mixing:
Assert.AreEqual(" 001",
Printf.sprintf("%5.3d", 1));
//Zero:
Assert.AreEqual("00",
Printf.sprintf("%.2d", 0));
Assert.AreEqual("",
Printf.sprintf("%.0d", 0));
Assert.AreEqual("",
Printf.sprintf("%.d", 0));
//Floating point:
Assert.AreEqual("0.1235",
Printf.sprintf("%.4f", 0.123456));
Assert.AreEqual("0",
Printf.sprintf("%.0f", 0.123456));
//Mixing:
Assert.AreEqual(" 0.123",
Printf.sprintf("%6.3f", 0.123));
Assert.AreEqual("0.123",
Printf.sprintf("%4.3f", 0.123));
//Scientific:
Assert.AreEqual("1.2346e-001",
Printf.sprintf("%.4e", 0.123456));
Assert.AreEqual("1e-001",
Printf.sprintf("%.0e", 0.123456));
//Mixing:
Assert.AreEqual("1.235e-001",
Printf.sprintf("%4.3e", 0.123456));
Assert.AreEqual(" 1.235e-001",
Printf.sprintf("%15.3e", 0.123456));
//String:
Assert.AreEqual("asd",
Printf.sprintf("%.3s", "asdfjkl"));
Assert.AreEqual("",
Printf.sprintf("%.s", "asdfjkl"));
//Mixing:
Assert.AreEqual(" asd",
Printf.sprintf("%6.3s", "asdfjkl"));
}
[Test]
public void TestHashMark() {
//Prefix for o, h and H
Assert.AreEqual("011 0xff 0XABC",
Printf.sprintf("%#o %#x %#X", 9, 0xff, 0xabc));
//Decimal point for f, e and E
Assert.AreEqual("1. 2.e+000 3.E+000",
Printf.sprintf("%#.0f %#.0e %#.0E", 1.1, 2.1, 3.1));
Assert.AreEqual("1.1 2.1e+000 3.1E+000",
Printf.sprintf("%#.1f %#.1e %#.1E", 1.1, 2.1, 3.1));
//Mixing with 0 and padding
Assert.AreEqual("0x0ab",
Printf.sprintf("%#05x", 0xab));
}
[Test]
public void TestGSpecifier() {
Assert.AreEqual("0.0001",
Printf.sprintf("%g", 0.0001));
Assert.AreEqual("1e-05",
Printf.sprintf("%g", 0.00001));
Assert.AreEqual("1E-05",
Printf.sprintf("%G", 0.00001));
//Trailing zeros
Assert.AreEqual("0.01",
Printf.sprintf("%.3g", 0.01));
Assert.AreEqual("0.010",
Printf.sprintf("%.3f", 0.01));
//Assert.AreEqual("0.010",
// Printf.sprintf("%#.3g", 0.01));
//Precision = significant digits
Assert.AreEqual(" 10.1",
Printf.sprintf("%9.3g", 10.111111));
}
}
}
#endif