Перем гИндикатор;

Процедура тестСоздание () Экспорт
	Конвертер = СоздатьОбъект ("Йоксель.ГрафическийКонвертер");
	ПроверитьРавенство (ТипЗначенияСтр (Конвертер), "Йоксель.ГрафическийКонвертер");
	ПроверитьРавенство (Конвертер.КоличествоБитНаПиксел, 24);
	ПроверитьРавенство (Конвертер.ВысотаСтраницы, 0);
	ПроверитьРавенство (Конвертер.ШиринаСтраницы, 0);
	ПроверитьРавенство (Конвертер.РассчитатьКоличествоСтраниц (), 1);
КонецПроцедуры

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

Процедура тестУстановитьДокумент () Экспорт
	Конвертер = СоздатьОбъект ("Йоксель.ГрафическийКонвертер");
	
	ВсеНормально = 0;
	Попытка
		Конвертер.УстановитьДокумент ("Ботва");
	Исключение
		ВсеНормально = 1;
	КонецПопытки;
	Проверить (ВсеНормально);
	
	ВсеНормально = 0;
	Попытка
		Конвертер.УстановитьДокумент (СоздатьОбъект ("СписокЗначений"));
	Исключение
		ВсеНормально = 1;
	КонецПопытки;
	Проверить (ВсеНормально);
	
	Таб = СоздатьОбъект ("ТабличныйДокумент");
	Конвертер.УстановитьДокумент (Таб);
КонецПроцедуры

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

Процедура тестЗаписать () Экспорт
	Конвертер = СоздатьОбъект ("Йоксель.ГрафическийКонвертер");
	ИмяФайла = КаталогВременныхФайлов () + "TempImage.tmp";
	
	Если ФС.СуществуетФайл (ИмяФайла) = 1 Тогда
		ФС.УдалитьФайл (ИмяФайла);
	КонецЕсли;
	
	ПроверитьРавенство (ФС.СуществуетФайл (ИмяФайла), 0);
	
	ВсеНормально = 0;
	
	Попытка
		Конвертер.Записать (ИмяФайла, "png");
	Исключение
		ВсеНормально = 1;
	КонецПопытки;
	
	Проверить (ВсеНормально);
	ПроверитьРавенство (ФС.СуществуетФайл (ИмяФайла), 0);
	
	Таб = СоздатьОбъект ("ТабличныйДокумент");
	Таб.Область (1, 1).Текст = "тест";
	Конвертер.УстановитьДокумент (Таб);
	
	Конвертер.Записать (ИмяФайла, "png");
	Проверить (ФС.СуществуетФайл (ИмяФайла));
	ФС.УдалитьФайл (ИмяФайла);
	ПроверитьРавенство (ФС.СуществуетФайл (ИмяФайла), 0);
КонецПроцедуры

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

Процедура ОбработчикПрогресса (Процент)
	гИндикатор = 1;
КонецПроцедуры

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

Процедура тестСобытиеПрогрессВыполнения () Экспорт
	
	Конвертер = СоздатьОбъект ("Йоксель.ГрафическийКонвертер");
	ИмяФайла = КаталогВременныхФайлов () + "TempImage.tmp";
	
	Если ФС.СуществуетФайл (ИмяФайла) = 1 Тогда
		ФС.УдалитьФайл (ИмяФайла);
	КонецЕсли;
	
	ПроверитьРавенство (ФС.СуществуетФайл (ИмяФайла), 0);
	
	Таб = СоздатьОбъект ("ТабличныйДокумент");
	Таб.Область (1, 1).Текст = "тест";
	Конвертер.УстановитьДокумент (Таб);
	Конвертер.ПодписатьсяНаСобытие ("ПрогрессВыполнения", "ОбработчикПрогресса");
	
	гИндикатор = 0;
	Конвертер.Записать (ИмяФайла, "png");
	Проверить (ФС.СуществуетФайл (ИмяФайла));
	ФС.УдалитьФайл (ИмяФайла);
	ПроверитьРавенство (ФС.СуществуетФайл (ИмяФайла), 0);
	
	Проверить (гИндикатор);
КонецПроцедуры

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

Процедура тестКоличествоБитНаПиксел () Экспорт
	Конвертер = СоздатьОбъект ("Йоксель.ГрафическийКонвертер");
	Конвертер.КоличествоБитНаПиксел = 1;
	ПроверитьРавенство (Конвертер.КоличествоБитНаПиксел, 1);
	Конвертер.КоличествоБитНаПиксел = 4;
	ПроверитьРавенство (Конвертер.КоличествоБитНаПиксел, 4);
	Конвертер.КоличествоБитНаПиксел = 8;
	ПроверитьРавенство (Конвертер.КоличествоБитНаПиксел, 8);
	Конвертер.КоличествоБитНаПиксел = 24;
	ПроверитьРавенство (Конвертер.КоличествоБитНаПиксел, 24);
	
	ВсеНормально = 0;
	Попытка
		Конвертер.КоличествоБитНаПиксел = 3;
	Исключение
		ВсеНормально = 1;
	КонецПопытки;
	Проверить (ВсеНормально);
	
	ВсеНормально = 0;
	Попытка
		Конвертер.КоличествоБитНаПиксел = 16;
	Исключение
		ВсеНормально = 1;
	КонецПопытки;
	Проверить (ВсеНормально);
	
	ВсеНормально = 0;
	Попытка
		Конвертер.КоличествоБитНаПиксел = 32;
	Исключение
		ВсеНормально = 1;
	КонецПопытки;
	Проверить (ВсеНормально);
КонецПроцедуры

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

Процедура тестВысотаСтраницы () Экспорт
	Конвертер = СоздатьОбъект ("Йоксель.ГрафическийКонвертер");
	Конвертер.ВысотаСтраницы = 100;
	ПроверитьРавенство (Конвертер.ВысотаСтраницы, 100);
	Конвертер.ВысотаСтраницы = 200;
	ПроверитьРавенство (Конвертер.ВысотаСтраницы, 200);
	
	ВсеНормально = 0;
	Попытка
		Конвертер.ВысотаСтраницы = -10;
	Исключение
		ВсеНормально = 1;
	КонецПопытки;
	
	Проверить (ВсеНормально);
КонецПроцедуры

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

Процедура тестШиринаСтраницы () Экспорт
	Конвертер = СоздатьОбъект ("Йоксель.ГрафическийКонвертер");
	Конвертер.ШиринаСтраницы = 100;
	ПроверитьРавенство (Конвертер.ШиринаСтраницы, 100);
	Конвертер.ШиринаСтраницы = 200;
	ПроверитьРавенство (Конвертер.ШиринаСтраницы, 200);
	
	ВсеНормально = 0;
	Попытка
		Конвертер.ШиринаСтраницы = -10;
	Исключение
		ВсеНормально = 1;
	КонецПопытки;
	
	Проверить (ВсеНормально);
КонецПроцедуры

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

Процедура тестПолучитьИзображение () Экспорт
	Конвертер = СоздатьОбъект ("Йоксель.ГрафическийКонвертер");
	
	ВсеНормально = 0;
	Попытка
		Картинка = Конвертер.ПолучитьИзображение ();
	Исключение
		ВсеНормально = 1;
	КонецПопытки;
	Проверить (ВсеНормально);
	
	Таб = СоздатьОбъект ("ТабличныйДокумент");
	Таб.Область (1, 1).Текст = "тест";
	Конвертер.УстановитьДокумент (Таб);
	Картинка = Конвертер.ПолучитьИзображение ();
	ПроверитьРавенство (ТипЗначенияСтр (Картинка), "Йоксель.Картинка");
КонецПроцедуры

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

Процедура тестПолучитьСтраницу () Экспорт
	Конвертер = СоздатьОбъект ("Йоксель.ГрафическийКонвертер");
	
	ВсеНормально = 0;
	Попытка
		Картинка = Конвертер.ПолучитьСтраницу (0);
	Исключение
		ВсеНормально = 1;
	КонецПопытки;
	Проверить (ВсеНормально);
	
	ВсеНормально = 0;
	Попытка
		Картинка = Конвертер.ПолучитьСтраницу (-2);
	Исключение
		ВсеНормально = 1;
	КонецПопытки;
	Проверить (ВсеНормально);
	
	ВсеНормально = 0;
	Попытка
		Картинка = Конвертер.ПолучитьСтраницу (1);
	Исключение
		ВсеНормально = 1;
	КонецПопытки;
	Проверить (ВсеНормально);
	
	Таб = СоздатьОбъект ("ТабличныйДокумент");
	Таб.Область (1, 1).Текст = "тест";
	
	Конвертер.УстановитьДокумент (Таб);
	
	ВсеНормально = 0;
	Попытка
		Картинка = Конвертер.ПолучитьСтраницу (1);
	Исключение
		ВсеНормально = 1;
	КонецПопытки;
	Проверить (ВсеНормально);
	
	Конвертер.ВысотаСтраницы = 100;
	
	ВсеНормально = 0;
	Попытка
		Картинка = Конвертер.ПолучитьСтраницу (1);
	Исключение
		ВсеНормально = 1;
	КонецПопытки;
	Проверить (ВсеНормально);
	
	Конвертер.ШиринаСтраницы = 100;
	Картинка = Конвертер.ПолучитьСтраницу (1);
	ПроверитьРавенство (ТипЗначенияСтр (Картинка), "Йоксель.Картинка");
КонецПроцедуры

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

Процедура ПроверитьЗаписьСтраницы (Конвертер, БитНаПиксел, ИмяФайла, ФорматФайла, ТипФайлаКартинки)
	Конвертер.КоличествоБитНаПиксел = БитНаПиксел;
	Конвертер.ЗаписатьСтраницуВФайл (1, ИмяФайла, ФорматФайла);
	Проверить (ФС.СуществуетФайл (ИмяФайла));
	
	Картинка = СоздатьОбъект ("Йоксель.Картинка");
	Картинка.Открыть (ИмяФайла, ТипФайлаКартинки);
	ПроверитьРавенство (Картинка.БитНаПиксел, БитНаПиксел);
	
	ФС.УдалитьФайл (ИмяФайла);
КонецПроцедуры

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

Процедура тестЗаписатьСтраницуВФайл () Экспорт
	Конвертер = СоздатьОбъект ("Йоксель.ГрафическийКонвертер");
	Таб = СоздатьОбъект ("ТабличныйДокумент");
	Таб.Область (1, 1).Текст = "тест";
	Конвертер.УстановитьДокумент (Таб);
	
	ИмяФайла = КаталогВременныхФайлов () + "testimage.tmp";
	Если ФС.СуществуетФайл (ИмяФайла) = 1 Тогда
		ФС.УдалитьФайл (ИмяФайла);
	КонецЕсли;
	
	Конвертер.ВысотаСтраницы = 100;
	Конвертер.ШиринаСтраницы = 100;
	
	ПроверитьЗаписьСтраницы (Конвертер, 1, ИмяФайла, "bmp", 1);
	ПроверитьЗаписьСтраницы (Конвертер, 4, ИмяФайла, "bmp", 1);
	ПроверитьЗаписьСтраницы (Конвертер, 8, ИмяФайла, "bmp", 1);
	ПроверитьЗаписьСтраницы (Конвертер, 24, ИмяФайла, "bmp", 1);
	
	ПроверитьЗаписьСтраницы (Конвертер, 1, ИмяФайла, "png", 3);
	ПроверитьЗаписьСтраницы (Конвертер, 4, ИмяФайла, "png", 3);
	ПроверитьЗаписьСтраницы (Конвертер, 8, ИмяФайла, "png", 3);
	ПроверитьЗаписьСтраницы (Конвертер, 24, ИмяФайла, "png", 3);
	
	ПроверитьЗаписьСтраницы (Конвертер, 24, ИмяФайла, "jpg", 2);
	
	Если ФС.СуществуетФайл (ИмяФайла) = 1 Тогда
		ФС.УдалитьФайл (ИмяФайла);
	КонецЕсли;
КонецПроцедуры

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

Процедура тестЗаписатьВсеСтраницы () Экспорт
	Конвертер = СоздатьОбъект ("Йоксель.ГрафическийКонвертер");
	Таб = СоздатьОбъект ("ТабличныйДокумент");
	Таб.Область (2, 2).Текст = "тест";
	Конвертер.УстановитьДокумент (Таб);
	Конвертер.ВысотаСтраницы = 100;
	Конвертер.ШиринаСтраницы = 100;
	
	ИмяКаталога = КаталогВременныхФайлов () + "YokselGraphTests/";
	ВременныйКаталог = СоздатьОбъект ("ВременныйКаталог");
	ВременныйКаталог.УстановитьКаталог (ИмяКаталога);
	
	Если ФС.СуществуетФайл (ИмяКаталога) = 0 Тогда
		ФС.СоздатьКаталог (ИмяКаталога);
	КонецЕсли;

	КолвоСтраниц = Конвертер.РассчитатьКоличествоСтраниц ();
	Конвертер.ЗаписатьВсеСтраницы (ИмяКаталога, "png", "стр");
	
	ТаблицаСтраниц = СоздатьОбъект ("ТаблицаЗначений");
	ТаблицаСтраниц.КоличествоСтрок (1);
	ТаблицаСтраниц.КоличествоКолонок (КолвоСтраниц);
	
	ИмяФайла = ФС.НайтиПервыйФайл (ИмяКаталога + "*.*");
	Пока ПустаяСтрока (ИмяФайла) = 0 Цикл
		Если ((ИмяФайла = ".") ИЛИ (ИмяФайла = "..")) Тогда
			ИмяФайла = ФС.НайтиСледующийФайл ();
			Продолжить;
		КонецЕсли;
		
		ПроверитьРавенство (Лев (ИмяФайла, 3), "стр");
		Расширение = Прав (ИмяФайла, 4);
		ПроверитьРавенство (Расширение, ".png");
		ИндексСтраницы = Число (Сред (ИмяФайла, 4, 1));
		ТаблицаСтраниц.УстановитьЗначение (1, ИндексСтраницы, 1);
		
		ИмяФайла = ФС.НайтиСледующийФайл ();
	КонецЦикла;
	
	Для Ч = 1 По КолвоСтраниц Цикл
		ПроверитьРавенство (ТаблицаСтраниц.ПолучитьЗначение (1, Ч), 1);
	КонецЦикла;
КонецПроцедуры
