понедельник, 15 марта 2010 г.

Спецификации для заданий 1-го занятия по Java

Я думаю, все кто хотел задачки уже порешали, поэтому начну выкладывать свои решения этих задач. По моему мнению, самый оптимальный вариант в первом сообщении выкладывать спецификацию в виде теста, во втором уже решения. Это позволит тем, кто еще не решал, воспользоваться тестами для проверки правильности, и с другой стороны случайно не увидеть как решать задачу.
Поэтому здесь только спецификации тестирования.



1. Напишите программу, печатающую простые числа вплоть до числа, заданного командной строке

Я подошел к решению этой задачи разбив ее на два метода. Первый - проверяет является число простым или нет, второй - решает поставленную задачу.
Итак методы можно протестировать так:
    @Test
  public void testIsSimpleNumber()
  {
    boolean result = Task1.isSimple(10);
    Assert.assertFalse(result);
    result = Task1.isSimple(11);
    Assert.assertTrue(result);

  }

  @Test
  public void testPrintSimple()
  {
    Task1.PrintSimple(30);
  }

* This source code was highlighted with Source Code Highlighter.
2. Реализуйте методы класса, проверяющего правильность даты
Эта задача уже интереснее и для задания спецификации необходимо учитывать года до 1970 года, високосные года и проверку на 30 и 31 день в месяце.
Это все описать можно чем то таким:
  @Test
  public void testCheckDate()
  {
    boolean result = DateValidator.checkDate(12, 15);
    Assert.assertTrue(result);
    result = DateValidator.checkDate(2, 28);
    Assert.assertTrue(result);
    result = DateValidator.checkDate(-1, 28);
    Assert.assertFalse(result);
    result = DateValidator.checkDate(20, 28);
    Assert.assertFalse(result);
    result = DateValidator.checkDate(2, 29);
    Assert.assertFalse(result);

    result = DateValidator.checkDate(1990, 12, 1);
    Assert.assertTrue(result);
    result = DateValidator.checkDate(2005, 1, 1);
    Assert.assertTrue(result);
    result = DateValidator.checkDate(1990, -1, 1);
    Assert.assertFalse(result);
    result = DateValidator.checkDate(2009, 2, 29);
    Assert.assertFalse(result);
    result = DateValidator.checkDate(2009, 11, 35);
    Assert.assertFalse(result);
    result = DateValidator.checkDate(2000, 2, 29);
    Assert.assertTrue(result);
    result = DateValidator.checkDate(2100, 2, 29);
    Assert.assertFalse(result);
    result = DateValidator.checkDate(1900, 12, 29);
    Assert.assertFalse(result);
  }


* This source code was highlighted with Source Code Highlighter.
Единственно я здесь на описал проверку на день меньше 1.

3. Реализуйте методы класса, работающего со строкой.
Здесь необходимо в первом случае проверять как правильность работы так и некорректность позиции на которую необходимо вставлять символ. Во втором случае, проверить на строках четной и нечетной длинны.
Записать проверки можно так:
  @Test
  public void testSetCharAt()
  {
    String result = StringUtils.setCharAt("aaaaaa", 'b', 3);
    Assert.assertEquals("aaabaa", result);
    result = StringUtils.setCharAt("aaaaaa", 'b', 5);
    Assert.assertEquals("aaaaab", result);
    result = StringUtils.setCharAt("aaaaaa", 'b', -3);
    Assert.assertEquals("aaaaaa", result);
    result = StringUtils.setCharAt("aaaaaa", 'b', 8);
    Assert.assertEquals("aaaaaa", result);
  }

  @Test
  public void testReverse()
  {
    String result = StringUtils.reverse("abcd");
    Assert.assertEquals("dcba", result);
    result = StringUtils.reverse("abc");
    Assert.assertEquals("cba", result);
  


* This source code was highlighted with Source Code Highlighter.
На этом собственно сообщение можно заканчивать. Решения выложу чуть позже. Обед, сами понимаете.

Комментариев нет:

Отправить комментарий