mirror of
https://github.com/logos-storage/nim-leveldb.git
synced 2026-01-02 13:43:11 +00:00
nimble package
This commit is contained in:
parent
b9c39010d7
commit
90d176e0fa
13
leveldb.nimble
Normal file
13
leveldb.nimble
Normal file
@ -0,0 +1,13 @@
|
||||
# Package
|
||||
|
||||
version = "0.2.0"
|
||||
author = "Michał Zieliński"
|
||||
description = "LevelDB wrapper for Nim"
|
||||
license = "MIT"
|
||||
srcDir = "src"
|
||||
binDir = "bin"
|
||||
bin = @["leveldb"]
|
||||
|
||||
# Dependencies
|
||||
|
||||
requires "nim >= 1.0.0"
|
||||
@ -1,7 +1,5 @@
|
||||
import options, leveldb/raw
|
||||
|
||||
proc free(p: pointer) {.importc.}
|
||||
|
||||
type
|
||||
LevelDb* = ref object
|
||||
db: ptr leveldb_t
|
||||
@ -15,6 +13,8 @@ const
|
||||
levelDbTrue = uint8(1)
|
||||
levelDbFalse = uint8(0)
|
||||
|
||||
proc free(p: pointer) {.importc.}
|
||||
|
||||
proc checkError(errPtr: cstring) =
|
||||
if errPtr != nil:
|
||||
defer: free(errPtr)
|
||||
@ -127,47 +127,4 @@ proc removeDb*(name: string) =
|
||||
checkError(err)
|
||||
|
||||
when isMainModule:
|
||||
import sequtils
|
||||
|
||||
let env = leveldb_create_default_env()
|
||||
let dbName = $(leveldb_env_get_test_directory(env))
|
||||
let db = leveldb.open(dbName)
|
||||
|
||||
block version:
|
||||
let (major, minor) = db.version()
|
||||
doAssert major > 0
|
||||
doAssert minor > 0
|
||||
|
||||
block getPutDelete:
|
||||
doAssert db.get("hello") == none(string)
|
||||
db.put("hello", "world")
|
||||
doAssert db.get("hello") == some("world")
|
||||
db.delete("hello")
|
||||
doAssert db.get("hello") == none(string)
|
||||
|
||||
block iter:
|
||||
db.put("aa", "1")
|
||||
db.put("ba", "2")
|
||||
db.put("bb", "3")
|
||||
|
||||
block iterNormal:
|
||||
doAssert toSeq(db.iter()) ==
|
||||
@[("aa", "1"), ("ba", "2"), ("bb", "3")]
|
||||
|
||||
block iterReverse:
|
||||
doAssert toSeq(db.iter(reverse = true)) ==
|
||||
@[("bb", "3"), ("ba", "2"), ("aa", "1")]
|
||||
|
||||
block iterSeek:
|
||||
doAssert toSeq(db.iter(seek = "ab")) ==
|
||||
@[("ba", "2"), ("bb", "3")]
|
||||
|
||||
block iterSeekReverse:
|
||||
doAssert toSeq(db.iter(seek = "ab", reverse = true)) ==
|
||||
@[("ba", "2"), ("aa", "1")]
|
||||
|
||||
block close:
|
||||
db.close()
|
||||
|
||||
block remove:
|
||||
removeDb(dbName)
|
||||
discard
|
||||
1
tests/config.nims
Normal file
1
tests/config.nims
Normal file
@ -0,0 +1 @@
|
||||
switch("path", "$projectDir/../src")
|
||||
54
tests/test.nim
Normal file
54
tests/test.nim
Normal file
@ -0,0 +1,54 @@
|
||||
import unittest, options, sequtils
|
||||
import leveldb, leveldb/raw
|
||||
|
||||
suite "leveldb":
|
||||
|
||||
setup:
|
||||
let env = leveldb_create_default_env()
|
||||
let dbName = $(leveldb_env_get_test_directory(env))
|
||||
let db = leveldb.open(dbName)
|
||||
|
||||
teardown:
|
||||
db.close()
|
||||
removeDb(dbName)
|
||||
|
||||
test "version":
|
||||
let (major, minor) = db.version()
|
||||
check(major > 0)
|
||||
check(minor > 0)
|
||||
|
||||
test "get nothing":
|
||||
check(db.get("nothing") == none(string))
|
||||
|
||||
test "put and get":
|
||||
db.put("hello", "world")
|
||||
check(db.get("hello") == some("world"))
|
||||
|
||||
test "delete":
|
||||
db.put("hello", "world")
|
||||
db.delete("hello")
|
||||
check(db.get("hello") == none(string))
|
||||
|
||||
proc initData(db: LevelDb) =
|
||||
db.put("aa", "1")
|
||||
db.put("ba", "2")
|
||||
db.put("bb", "3")
|
||||
|
||||
test "iter":
|
||||
initData(db)
|
||||
check(toSeq(db.iter()) == @[("aa", "1"), ("ba", "2"), ("bb", "3")])
|
||||
|
||||
test "iter reverse":
|
||||
initData(db)
|
||||
check(toSeq(db.iter(reverse = true)) ==
|
||||
@[("bb", "3"), ("ba", "2"), ("aa", "1")])
|
||||
|
||||
test "iter seek":
|
||||
initData(db)
|
||||
check(toSeq(db.iter(seek = "ab")) ==
|
||||
@[("ba", "2"), ("bb", "3")])
|
||||
|
||||
test "iter seek reverse":
|
||||
initData(db)
|
||||
check(toSeq(db.iter(seek = "ab", reverse = true)) ==
|
||||
@[("ba", "2"), ("aa", "1")])
|
||||
Loading…
x
Reference in New Issue
Block a user