- •1 Постановка задачи 6
- •Введение
- •1 Постановка задачи
- •2 Теоретический раздел
- •3 Обзор предметной области
- •3.1 Апплет Clock2.Java
- •3.2 Обзор исходного кода Clock2.Java
- •4. Инструкция программиста
- •4.1. Бизнес-логика приложения в пользовательском классе
- •4.1.1. Поля и свойства Clock
- •4.1.2. Конструкторы класса Clock
- •4.1.3. Методы класса Clock
- •4.2. Визуализация текущей даты и времени
- •4.3. Сохранение текущего состояния приложения в файл и чтение из файла
- •4.3.1. Поля и свойства пользовательского класса ClockConfig
- •4.3.2. Конструкторы пользовательского класса ClockConfig
- •4.3.3. Методы пользовательского класса ClockConfig
- •5. Инструкция Пользователя
- •5.1. Запуск приложения
- •5.2. Основные элементы приложения
- •5.3. Управление главным окном приложения
- •5.4. Настройка приложения
- •Приложение а
- •Приложение б
- •Приложение в
- •Приложение г
- •Приложение д
- •Приложение е
- •Список использованных источников
Приложение д
Текст программы тестов приложения
namespace UnitTestClock
{
[TestClass]
public class UnitTestClock2
{
private void TestAssertColor(Clock clock, Brush color)
{
Assert.AreEqual(clock.CircleOfDial.Fill, color);
Assert.AreEqual(clock.SecondsArrow.Stroke, Brushes.Black);
Assert.AreEqual(clock.MinutesArrow.Stroke, Brushes.Black);
Assert.AreEqual(clock.MinutesArrow1.Stroke, Brushes.Black);
Assert.AreEqual(clock.HourArrow.Stroke, Brushes.Black);
Assert.AreEqual(clock.HourArrow1.Stroke, Brushes.Black);
if ((clock.CircleOfDial.Fill == Brushes.Yellow) || (clock.CircleOfDial.Fill == Brushes.White))
{
Assert.AreEqual(clock.TBDate.Foreground, Brushes.Black);
Assert.AreEqual(clock.TBTime.Foreground, Brushes.Black);
}
else
{
Assert.AreEqual(clock.TBDate.Foreground, Brushes.White);
Assert.AreEqual(clock.TBTime.Foreground, Brushes.White);
}
}
private void TestAssertDefaultConfig(Clock clock)
{
Assert.AreEqual(clock.TBDate.Visibility, ClockConfig.DefaultVisibleDate);
Assert.AreEqual(clock.TBTime.Visibility, ClockConfig.DefaultVisibleDigClock);
Assert.AreEqual(clock.SecondsArrow.Visibility, ClockConfig.DefaultVisibleSeconds);
Assert.AreEqual(clock.Radius, ClockConfig.defaultR);
Assert.AreEqual(clock.CircleOfDial.Fill.ToString(), ClockConfig.DefaultColor.ToString());
}
[TestMethod]
public void TestCreate()
{
Clock clock = new Clock();
Assert.IsNotNull(clock);
Assert.IsNotNull(clock.ParrentCanvas);
Assert.IsNotNull(clock.CircleOfDial);
Assert.IsNotNull(clock.TBDate);
Assert.IsNotNull(clock.TBTime);
Assert.IsNotNull(clock.HourArrow);
Assert.IsNotNull(clock.HourArrow1);
Assert.IsNotNull(clock.MinutesArrow);
Assert.IsNotNull(clock.MinutesArrow1);
Assert.IsNotNull(clock.SecondsArrow);
Assert.IsNotNull(clock.HourArrow1);
Assert.IsNotNull(clock.clockConfig);
}
[TestMethod]
public void TestSetSize()
{
Clock clock = new Clock();
double r = 150;
clock.SetSizeClock(150);
Assert.AreEqual(clock.Radius, r);
try
{
clock.SetSizeClock(100);
}
catch(EClockSize)
{
Assert.AreEqual(clock.Radius, r);
}
try
{
clock.SetSizeClock(360);
}
catch (EClockSize)
{
Assert.AreEqual(clock.Radius, r);
}
try
{
clock.ParrentCanvas = null;
clock.SetSizeClock(150);
}
catch (ClockException)
{
return;
}
Assert.Fail("Не возникло исключение!");
}
[TestMethod]
public void TestSetColor()
{
Clock clock = new Clock();
clock.SetColor(Brushes.Yellow);
this.TestAssertColor(clock, Brushes.Yellow);
clock.SetColor(Brushes.LightBlue);
this.TestAssertColor(clock, Brushes.LightBlue);
clock.SetColor(Brushes.White);
this.TestAssertColor(clock, Brushes.White);
clock.SetColor(Brushes.Black);
this.TestAssertColor(clock, Brushes.Black);
clock.HourArrow = null;
try
{
clock.SetColor(Brushes.Black);
}
catch (ClockException)
{
return;
}
Assert.Fail("Не возникло исключение!");
}
[TestMethod]
public void TestConfig()
{
File.Delete(Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location) + "\\" + ClockConfig.FileName);
Clock clock = new Clock();
clock.SetColor(Brushes.Yellow);
clock.SetSizeClock(170);
clock.TBDate.Visibility = Visibility.Hidden;
clock.TBTime.Visibility = Visibility.Hidden;
clock.SecondsArrow.Visibility = Visibility.Hidden;
ClockConfig.SetDefaultConfig(ref clock);
TestAssertDefaultConfig(clock);
//сохраняем настройки в файл //поумолчанию //изменяем //загружаем сохранненые//проверяем
clock.clockConfig.SaveConfig(clock);
clock.SetColor(Brushes.Yellow);
clock.SetSizeClock(170);
clock.clockConfig.LoadConfig(ref clock);
TestAssertDefaultConfig(clock);
//сохраняем недефолтные настойки//удаляем файл/
clock.SetColor(Brushes.Yellow);
clock.SetSizeClock(170);
clock.clockConfig.SaveConfig(clock);
//удаляем файл настроек и создаем новый экземпляр класса, должен создаться с дефолтными настройками
File.Delete(clock.clockConfig.FileDirectory);
clock = null;
clock = new Clock();
TestAssertDefaultConfig(clock);
//проверяем наличие файла настроек
Assert.AreEqual(File.Exists(clock.clockConfig.FileDirectory),false);
//удаляем файл и создаем пустой
string FileName = clock.clockConfig.FileDirectory;
File.Delete(clock.clockConfig.FileDirectory);
FileStream fs = File.Create(FileName);
fs.Close();
try
{
clock.clockConfig.LoadConfig(ref clock);
}
catch (EConfig)
{
clock = null;
}
try
{
clock = new Clock();
}
catch (EConfig)
{
clock = null;
File.Delete(FileName);
return;
}
Assert.Fail("No exception was thrown.");
}
[TestMethod]
public void TestRunThread()
{
int xs, ys, xm, ym, xh, yh;
String sDateTimeOld, sDateTimeNext;
DateTime DateTimeOld, DateTimeNext, сurrentDataTime;
Clock clock = new Clock();
Delegate ThreadStartDelegate = (ThreadStart)delegate() { clock.RepaintTime(); };
double xcenter = clock.ParrentCanvas.Width / 2;
double ycenter = clock.ParrentCanvas.Height / 2;
//запись в очередь диспетчера
//Dispatcher.CurrentDispatcher
clock.Dispatcher.Invoke(ThreadStartDelegate);
сurrentDataTime = clock.CurrentDataTime;
sDateTimeOld = clock.TBDate.Text + " " + clock.TBTime.Text;
DateTimeOld = DateTime.Parse(sDateTimeOld);
Thread.Sleep(1000);
clock.Dispatcher.Invoke(ThreadStartDelegate);
sDateTimeNext = clock.TBDate.Text + " " + clock.TBTime.Text;
DateTimeNext = DateTime.Parse(sDateTimeNext);
xs = (int)(Math.Cos(clock.CurrentDataTime.Second * 3.14f / 30 - 3.14f / 2) * (clock.Radius - 50) + xcenter);
ys = (int)(Math.Sin(clock.CurrentDataTime.Second * 3.14f / 30 - 3.14f / 2) * (clock.Radius - 50) + ycenter);
xm = (int)(Math.Cos(clock.CurrentDataTime.Minute * 3.14f / 30 - 3.14f / 2) * (clock.Radius - 70) + xcenter);
ym = (int)(Math.Sin(clock.CurrentDataTime.Minute * 3.14f / 30 - 3.14f / 2) * (clock.Radius - 70) + ycenter);
xh = (int)(Math.Cos((clock.CurrentDataTime.Hour * 30 + clock.CurrentDataTime.Minute / 2) * 3.14f / 180 - 3.14f / 2) * (clock.Radius - 85) + xcenter);
yh = (int)(Math.Sin((clock.CurrentDataTime.Hour * 30 + clock.CurrentDataTime.Minute / 2) * 3.14f / 180 - 3.14f / 2) * (clock.Radius - 85) + ycenter);
//положение секундноуй стрелки
Assert.AreEqual(clock.SecondsArrow.X2, xs);
Assert.AreEqual(clock.SecondsArrow.X1, xcenter);
Assert.AreEqual(clock.SecondsArrow.Y2, ys);
Assert.AreEqual(clock.SecondsArrow.Y1, ycenter);
//Минутная стрелка
//*****************
Assert.AreEqual(clock.MinutesArrow.X2, xm);
Assert.AreEqual(clock.MinutesArrow.X1, xcenter);
Assert.AreEqual(clock.MinutesArrow.Y2, ym);
Assert.AreEqual(clock.MinutesArrow.Y1, ycenter - 1);
//*****************
Assert.AreEqual(clock.MinutesArrow1.X2, xm);
Assert.AreEqual(clock.MinutesArrow1.X1, xcenter - 1);
Assert.AreEqual(clock.MinutesArrow1.Y2, ym);
Assert.AreEqual(clock.MinutesArrow1.Y1, ycenter);
//часовая стрелка
//*****************
Assert.AreEqual(clock.HourArrow.X2, xh);
Assert.AreEqual(clock.HourArrow.X1, xcenter);
Assert.AreEqual(clock.HourArrow.Y2, yh);
Assert.AreEqual(clock.HourArrow.Y1, ycenter-1);
//*****************
Assert.AreEqual(clock.HourArrow1.X2, xh);
Assert.AreEqual(clock.HourArrow1.X1, xcenter-1);
Assert.AreEqual(clock.HourArrow1.Y2, yh);
Assert.AreEqual(clock.HourArrow1.Y1, ycenter);
//проверка изменяется ли время
Assert.AreNotEqual(DateTimeOld, DateTimeNext);
Assert.AreNotEqual(сurrentDataTime, clock.CurrentDataTime);
Assert.AreEqual(сurrentDataTime < clock.CurrentDataTime, true);
clock.HourArrow = null;
try
{
clock.RepaintTime();
}
catch (ClockException)
{
return;
}
Assert.Fail("No exception was thrown.");
}
}
}
