| 395 | } |
| 396 | |
| 397 | func TestDB_EdgeCases(t *testing.T) { |
| 398 | tempDir := t.TempDir() |
| 399 | cfg := &config.Config{ |
| 400 | LevelDB: config.LevelDBConfig{ |
| 401 | CacheSize: 64 * 1024 * 1024, |
| 402 | BlockSize: 4 * 1024, |
| 403 | WriteBufferSize: 4 * 1024 * 1024, |
| 404 | MaxOpenFiles: 1000, |
| 405 | Compression: true, |
| 406 | }, |
| 407 | } |
| 408 | |
| 409 | db, err := Store{}.Open(tempDir, cfg) |
| 410 | require.NoError(t, err) |
| 411 | defer db.Close() |
| 412 | |
| 413 | // Test empty key - should fail validation |
| 414 | err = db.Put([]byte(""), []byte("empty-key")) |
| 415 | require.Error(t, err) |
| 416 | assert.Contains(t, err.Error(), "key cannot be empty") |
| 417 | |
| 418 | value, err := db.Get([]byte("")) |
| 419 | require.Error(t, err) |
| 420 | assert.Contains(t, err.Error(), "key cannot be empty") |
| 421 | |
| 422 | // Test nil value |
| 423 | err = db.Put([]byte("nil-value"), nil) |
| 424 | require.NoError(t, err) |
| 425 | |
| 426 | value, err = db.Get([]byte("nil-value")) |
| 427 | require.NoError(t, err) |
| 428 | // LevelDB stores empty values as empty byte slices, not nil |
| 429 | assert.Equal(t, []byte{}, value) |
| 430 | |
| 431 | // Test non-existent key |
| 432 | value, err = db.Get([]byte("non-existent")) |
| 433 | require.NoError(t, err) |
| 434 | assert.Nil(t, value) |
| 435 | } |