Модераторы: Daevaorn
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как написать свой custom стрим ? 
V
    Опции темы
EvilsInterrupt
Дата 24.4.2013, 13:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Executables research
***


Профиль
Группа: Завсегдатай
Сообщений: 1019
Регистрация: 14.7.2007
Где: Железнодорожный, МО, Россия

Репутация: 2
Всего: 9



Мне нужно нужно написать свой собственные стримы потомки от стримов базовой библиотеки. Как это сделать?

Мне это нужно чтобы функции в уже написанном коде работали с моим стримом. Сейчас они либо принимают const std::istream&, либо std::ostream& и std::iostream&

Я хочу подавать свой TestAPI::Mock::TestStream в целях тестирования. Вопрос как написать этот стрим?

Пока нашел HOWTO: Свой поток ввода-вывода , но что-то слишком заумное smile Есть ли что проще?

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

Прошу пнуть в нужном направлении ) Спасибо!
PM MAIL WWW ICQ Jabber   Вверх
baldina
Дата 24.4.2013, 13:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3433
Регистрация: 5.12.2007
Где: Москва

Репутация: 32
Всего: 101



Цитата(EvilsInterrupt @  24.4.2013,  13:43 Найти цитируемый пост)
Я хочу подавать свой TestAPI::Mock::TestStream в целях тестирования

fstream (т.е. обычный файл) в целях тестирования не пойдет?
PM MAIL   Вверх
EvilsInterrupt
Дата 24.4.2013, 14:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Executables research
***


Профиль
Группа: Завсегдатай
Сообщений: 1019
Регистрация: 14.7.2007
Где: Железнодорожный, МО, Россия

Репутация: 2
Всего: 9



Цитата

fstream (т.е. обычный файл) в целях тестирования не пойдет? 

Нет!
Во-первых : В Unit-тестах не должно быть работы с файловой системой
Во-Вторых: Даже если и сделать на fstream это означает юнит-тесты будут зависеть от файловых путей.

Нужен именно стрим дополнительный для тестовых целей
PM MAIL WWW ICQ Jabber   Вверх
baldina
Дата 24.4.2013, 14:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3433
Регистрация: 5.12.2007
Где: Москва

Репутация: 32
Всего: 101



не очень понимаю почему
Цитата(EvilsInterrupt @  24.4.2013,  14:05 Найти цитируемый пост)
В Unit-тестах не должно быть работы с файловой системой


ну тогда есть stringstream. причем его контент (как и файл) можно не только задавать статически, но и генерировать программно

Добавлено через 2 минуты и 24 секунды
Цитата(EvilsInterrupt @  24.4.2013,  14:05 Найти цитируемый пост)
юнит-тесты будут зависеть от файловых путей

у вас весь проект в определенной мере зависит от файловых путей. поместите тестовые файлы внутрь проекта, и зависимостей не станет больше. также можно создавать временные файлы во время теста.
PM MAIL   Вверх
EvilsInterrupt
Дата 24.4.2013, 14:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Executables research
***


Профиль
Группа: Завсегдатай
Сообщений: 1019
Регистрация: 14.7.2007
Где: Железнодорожный, МО, Россия

Репутация: 2
Всего: 9



Цитата

ну тогда есть stringstream. причем его контент (как и файл) можно не только задавать статически, но и генерировать программно

У меня код ориентирован на работу с бинарными данными, а не со строками. Use-story вида: Прочитать заголовок из стрима - прочитать из поля офсет другого заголовка - перейти по осфету - зачитать этот заголовок и т.д. А stringstream предназначен прежде всего для работы со строками, что может вводить в заблуждение читающего код.

Цитата

у вас весь проект в определенной мере зависит от файловых путей. поместите тестовые файлы внутрь проекта, и зависимостей не станет больше. также можно создавать временные файлы во время теста. 

Это уже не юнит-тест, это уже другой тип тестирования "интеграционный"
PM MAIL WWW ICQ Jabber   Вверх
EvilsInterrupt
Дата 24.4.2013, 15:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Executables research
***


Профиль
Группа: Завсегдатай
Сообщений: 1019
Регистрация: 14.7.2007
Где: Железнодорожный, МО, Россия

Репутация: 2
Всего: 9



Цитата(baldina @  24.4.2013,  15:11 Найти цитируемый пост)
не очень понимаю почему
Цитата(EvilsInterrupt @  24.4.2013,  14:05 )
В Unit-тестах не должно быть работы с файловой системой

Попробую пояснить почему. Дело в том что Юнит-тесты это прежде всего скорость работы! Если они будут работать медленно, то программер будет откладывать их запуск.
Напомню очевидность, которую Вы давно уже знаете: Операции с файлами значительно медленнее чем операции с памятью. Их можно включить в Post build event в вашем средстве разработки в debug-сборке, что я и делаю. Юнит-тест это своего рода выдирание какой-то части кода из продукта и помещение его на время в тестовые условия. Мы сами вольны выбирать откуда будут приходить тестовые данные толи из памяти, толи из файла, но ведь мы тестируем часть кода, а не работу с файлами, так зачем же нам замедлять процесс тестирования чтением файловой системы?
PM MAIL WWW ICQ Jabber   Вверх
EvilsInterrupt
Дата 24.4.2013, 15:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Executables research
***


Профиль
Группа: Завсегдатай
Сообщений: 1019
Регистрация: 14.7.2007
Где: Железнодорожный, МО, Россия

Репутация: 2
Всего: 9



...кажется мне надо писать потомка std::basic_streambuf...
PM MAIL WWW ICQ Jabber   Вверх
baldina
Дата 24.4.2013, 17:29 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3433
Регистрация: 5.12.2007
Где: Москва

Репутация: 32
Всего: 101



Цитата(EvilsInterrupt @  24.4.2013,  14:18 Найти цитируемый пост)
У меня код ориентирован на работу с бинарными данными

http://codepad.org/B4pxfJrj
PM MAIL   Вверх
EvilsInterrupt
Дата 24.4.2013, 18:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Executables research
***


Профиль
Группа: Завсегдатай
Сообщений: 1019
Регистрация: 14.7.2007
Где: Железнодорожный, МО, Россия

Репутация: 2
Всего: 9



baldina, Вопрос исчерпан, писать ничего дополнительно не нужно итак все есть. Спасибо!
PM MAIL WWW ICQ Jabber   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0601 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.