forked from dlang/cdcdb
		
	Русификация DDoc и сообщений
This commit is contained in:
		
							parent
							
								
									49ee7a4053
								
							
						
					
					
						commit
						f34b26c2b5
					
				
					 7 changed files with 387 additions and 361 deletions
				
			
		| 
						 | 
				
			
			@ -1,72 +0,0 @@
 | 
			
		|||
import cdcdb;
 | 
			
		||||
 | 
			
		||||
import std.file : read, write, remove, exists;
 | 
			
		||||
import std.path : buildPath;
 | 
			
		||||
import std.digest.sha : digest, SHA256;
 | 
			
		||||
import std.exception : assertThrown, assertNotThrown;
 | 
			
		||||
import std.datetime : DateTime;
 | 
			
		||||
import core.thread : Thread;
 | 
			
		||||
import core.time : msecs, seconds;
 | 
			
		||||
 | 
			
		||||
unittest
 | 
			
		||||
{
 | 
			
		||||
	const string dbPath = "./bin/test_cdcdb.db";
 | 
			
		||||
 | 
			
		||||
	if (exists(dbPath)) {
 | 
			
		||||
		remove(dbPath);
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	// Тест конструктора Storage
 | 
			
		||||
	auto storage = new Storage(dbPath, true, 22);
 | 
			
		||||
 | 
			
		||||
	// Тест настройки CDC
 | 
			
		||||
	storage.setupCDC(128, 256, 512, 0xFF, 0x0F);
 | 
			
		||||
 | 
			
		||||
	// Тест создания снимка
 | 
			
		||||
	ubyte[] data1 = cast(ubyte[]) "Hello, World!".dup;
 | 
			
		||||
	auto snap1 = storage.newSnapshot("test_label", data1, "First snapshot");
 | 
			
		||||
	assert(snap1 !is null);
 | 
			
		||||
	assert(snap1.label == "test_label");
 | 
			
		||||
	assert(snap1.length == data1.length);
 | 
			
		||||
	assert(snap1.sha256 == digest!SHA256(data1));
 | 
			
		||||
	assert(snap1.status == "ready");
 | 
			
		||||
	assert(snap1.description == "First snapshot");
 | 
			
		||||
 | 
			
		||||
	// Тест дубликата (не должен создать новый)
 | 
			
		||||
	auto snapDup = storage.newSnapshot("test_label", data1);
 | 
			
		||||
	assert(snapDup is null);
 | 
			
		||||
 | 
			
		||||
	// Тест изменения данных
 | 
			
		||||
	ubyte[] data2 = cast(ubyte[]) "Hello, Changed World!".dup;
 | 
			
		||||
	auto snap2 = storage.newSnapshot("test_label", data2);
 | 
			
		||||
	assert(snap2 !is null);
 | 
			
		||||
	assert(snap2.sha256 == digest!SHA256(data2));
 | 
			
		||||
 | 
			
		||||
	// Тест восстановления данных
 | 
			
		||||
	auto restored = snap1.data();
 | 
			
		||||
	assert(restored == data1);
 | 
			
		||||
	bool streamedOk = false;
 | 
			
		||||
	snap2.data((const(ubyte)[] chunk) {
 | 
			
		||||
		assert(chunk == data2); // Поскольку маленький файл — один фрагмент
 | 
			
		||||
		streamedOk = true;
 | 
			
		||||
	});
 | 
			
		||||
	assert(streamedOk);
 | 
			
		||||
 | 
			
		||||
	// Тест getSnapshots
 | 
			
		||||
	auto snaps = storage.getSnapshots("test_label");
 | 
			
		||||
	assert(snaps.length == 2);
 | 
			
		||||
	assert(snaps[0].id == snap1.id);
 | 
			
		||||
	assert(snaps[1].id == snap2.id);
 | 
			
		||||
 | 
			
		||||
	auto allSnaps = storage.getSnapshots();
 | 
			
		||||
	assert(allSnaps.length == 2);
 | 
			
		||||
 | 
			
		||||
	// Тест удаления
 | 
			
		||||
	assert(snap1.remove());
 | 
			
		||||
	snaps = storage.getSnapshots("test_label");
 | 
			
		||||
	assert(snaps.length == 1);
 | 
			
		||||
	assert(snaps[0].id == snap2.id);
 | 
			
		||||
 | 
			
		||||
	// Тест пустых данных
 | 
			
		||||
	assertThrown!Exception(storage.newSnapshot("empty", []));
 | 
			
		||||
}
 | 
			
		||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue