Главная Случайная страница


Полезное:

Как сделать разговор полезным и приятным Как сделать объемную звезду своими руками Как сделать то, что делать не хочется? Как сделать погремушку Как сделать так чтобы женщины сами знакомились с вами Как сделать идею коммерческой Как сделать хорошую растяжку ног? Как сделать наш разум здоровым? Как сделать, чтобы люди обманывали меньше Вопрос 4. Как сделать так, чтобы вас уважали и ценили? Как сделать лучше себе и другим людям Как сделать свидание интересным?


Категории:

АрхитектураАстрономияБиологияГеографияГеологияИнформатикаИскусствоИсторияКулинарияКультураМаркетингМатематикаМедицинаМенеджментОхрана трудаПравоПроизводствоПсихологияРелигияСоциологияСпортТехникаФизикаФилософияХимияЭкологияЭкономикаЭлектроника






Пример тестовой программы





Использование рассмотренной выше упрошенной объектной модели магазина может быть продемонстрировано при помощи тестовой программы, которая:

1. Активизирует сценарий использования магазина.

2. Проверяет ожидания от состояния основных объектов модели после тестового воздействия.

3. Распечатывает содержимое объектной модели на консоли.

test.cpp

//-----------------------------------------------------------------------------

 

#include "shop.hpp"

#include "order.hpp"

#include "item.hpp"

#include "product.hpp"

#include "money.hpp"

 

#include <cassert>

#include <cstdio>

 

//-----------------------------------------------------------------------------

 

 

void showShopStats (const Shop & _shop)

{

printf("Shop \"%s\" has %d products:\n",

_shop.getTitle().c_str(),

_shop.getProductsCount()

);

 

std::auto_ptr< Shop::ProductIterator > productIt = _shop.browseProducts();

while (productIt->hasNext())

{

Product const & product = productIt->getProduct();

 

printf(" - [%d] \"%s\", desription: \"%s\", price: %s\n",

product.getUniqueID(),

product.getName().c_str(),

product.getDescription().c_str(),

product.getCurrentPrice().toString().c_str()

);

 

productIt->next();

}

 

putchar('\n');

 

unsigned int nOrders = _shop.getOrdersCount();

printf("Totally there were %d order(s) registered\n", nOrders);

 

putchar('\n');

 

for (unsigned int i = 0; i < nOrders; i++)

{

const Order & order = _shop.getOrder(i);

 

printf("Order %d contains %d items with total cost of %s:\n",

order.getUniqueID(),

order.getItemsCount(),

order.getCost().toString().c_str()

);

 

unsigned int nItems = order.getItemsCount();

for (unsigned int k = 0; k < nItems; k++)

{

const Item & item = order.getItem(k);

printf(" Product = '%s', Quantity = %d, Price = %s, Cost = %s\n",

item.getProduct().getName().c_str(),

item.getQuantity(),

item.getPrice().toString().c_str(),

item.getCost().toString().c_str());

}

 

putchar('\n');

}

 

putchar('\n');

}

 

 

//-----------------------------------------------------------------------------

 

 

void main ()

{

/////

 

const char * SHOP_TITLE = "MyShop";

Shop shop(SHOP_TITLE);

 

/////

 

assert(shop.getTitle() == SHOP_TITLE);

assert(shop.getOrdersCount() == 0);

assert(shop.getProductsCount() == 0);

 

/////

 

Product const & batteries = shop.addProduct(

"Batteries",

"A pack with 4 batteries",

Money::fromString("12.00")

);

 

Product const & dvdDisk = shop.addProduct(

"DVD disk",

"A blank DVD disk for recording",

Money::fromString("3.00")

);

 

/////

 

assert(shop.getProductsCount() == 2);

assert(shop.findProduct("Batteries") == & batteries);

assert(shop.findProduct("DVD disk") == & dvdDisk);

assert(shop.findProduct("other-product") == NULL);

 

/////

 

Order & order = shop.newOrder();

order.newItem(batteries, 1);

order.newItem(dvdDisk, 3);

 

/////

 

assert(order.getCost().toString() == "21.00");

 

assert(order.getItemsCount() == 2);

 

assert(order.getItem(0).getQuantity() == 1);

assert(order.getItem(0).getCost() == batteries.getCurrentPrice());

 

assert(order.getItem(1).getQuantity() == 3);

assert(order.getItem(1).getCost() == (dvdDisk.getCurrentPrice() * 3));

 

/////

 

showShopStats(shop);

}

 

 

//-----------------------------------------------------------------------------

 

Процедура защиты лабораторной работы:

- подготовить отчет в печатном виде (один экземпляр на бригаду);

- ответить на вопросы преподавателя по ходу выполнения работы, а также на дополнительные теоретические вопросы по теме работы;

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







Date: 2015-12-12; view: 304; Нарушение авторских прав



mydocx.ru - 2015-2024 year. (0.008 sec.) Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав - Пожаловаться на публикацию