Как истинный приверженец vim, я устанавливаю его первым делом на любой мой рабочий компьютер с Майкрософт Уиндоуз, чем раз и навсегда отбиваю у коллег всякое желание что-либо делать на нем без меня. Очень, очень полезное свойство, но люблю я vim вовсе не за это.
Наступил я сегодня на грабли. Впрочем, наступил на них я уже давно, согласившись писать юнит-тесты для C++ кода на MSTest, но сегодня я нашел особо детские грабли.
Полагаю, что некоторые особо просвещенные читатели моего уютного бложека в курсе, что MSTest позволяет “облегчить” написание так называемых Data-Driven юнит тестов. Как обычно, облегчение это приходит в полном соответствии с корпоративным стандартом майкрософт – “теперь выстрелить себе в ногу стало еще легче”. Казалось бы, прикрепи себе атрибут [DataSource] перед тест-кейсом и вперед, на танки мегабайты входных данных, что может быть прекраснее?
Откуда же я знал, что вместо мегабайтов данных OleDB будет мне подсовывать противовелосипедные мины, по противности превосходящие лепешки, сбрасываемые летающими коровами? Оказалось, что если во входном файле данных, а файл данных у меня, как обычно, до ужаса хитрожопого формата – цифры, разделенные запятыми, чтобы ни одна сволочь не догадалась, так вот, если в этом файле идут два подряд шестнадцатеричных числа вроде “1F01,1F02″, то на вход теста поступает какая-то такая невообразимая бредятина, что первые три часа я напрочь отказывался верить, что такое вообще случается в пределах нашего горизонта событий, что бы это понятие не означало. Не знаю, почему, как и какой страшной логикой руководствовались аффтары OleDB и провайдера его Jet, но первое число из такой пары читалось почему-то исключительно как 101, а второе вообще никак не читалось.
Порвавши пять бубнов, я таки решил зайти с тыла и попробовал заменить шестнадцатеричные числа на более привычные неискушенному зрителю, а именно на десятичные. Попробовал и тест заработал, аж фуфайка завернулась. Развернув фуфайку, я задумался. Вручную конвертировать пять мегабайт шестнадцатеричных четырехразрядных чисел мне даже при почасовой оплате не хотелось, а выкидывать тест вообше шло в разрез с моими принципами. Ведь если выкинуть тест, этот кусок кода придется отлаживать в отладчике, а отлаживать свой только что написанный код в отладчике я ненавижу даже больше, чем MSTest и рано вставать.
“Даже если Вас съели, у Вас есть два выхода”, гласит известный афоризм. Так что подкрепившись корейским блюдом с названием, которое я вряд ли когда-нибудь смогу выговорить, я вспомнил, что у меня есть Vim. А в нем разве что тетриса нет (я, правда, специально не искал, может быть и есть). Первая же сцылко в гугле вывела меня на решение моей проблемы. Конвертирование всех шестнадцатеричных числе в файле в числа десятичные заняло один аккорд на клавиатуре и 1.45 секунды, после чего все тесты отработали так, что фуфайка скрутилась в шпагат.
Все-таки Vim – очень, очень удобный текстовый редактор. А MSTest – какашка страшная, а те, кто навязывает его использование для тестирования C++ кода, я вообще не скажу как называются.
0 Comments.