forked from mirror/ledisdb
add unit test
This commit is contained in:
parent
43905129b8
commit
1dd7d22198
|
@ -14,7 +14,7 @@ func bgetCommand(db *ledis.DB, args ...string) (interface{}, error) {
|
||||||
if v, err := db.BGet([]byte(args[0])); err != nil {
|
if v, err := db.BGet([]byte(args[0])); err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
} else {
|
} else {
|
||||||
return v, nil
|
return ledis.String(v), nil
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,93 @@
|
||||||
|
package http
|
||||||
|
|
||||||
|
import (
|
||||||
|
// "github.com/siddontang/ledisdb/ledis"
|
||||||
|
"testing"
|
||||||
|
)
|
||||||
|
|
||||||
|
func TestBgetCommand(t *testing.T) {
|
||||||
|
db := getTestDB()
|
||||||
|
db.BSetBit([]byte("test_bget"), 0, 1)
|
||||||
|
db.BSetBit([]byte("test_bget"), 1, 1)
|
||||||
|
db.BSetBit([]byte("test_bget"), 2, 1)
|
||||||
|
|
||||||
|
_, err := bgetCommand(db, "test_bget", "a", "b", "c")
|
||||||
|
if err == nil || err.Error() != "ERR wrong number of arguments for 'bget' command" {
|
||||||
|
t.Fatal("invalid err %v", err)
|
||||||
|
}
|
||||||
|
|
||||||
|
r, err := bgetCommand(db, "test_bget")
|
||||||
|
if err != nil {
|
||||||
|
t.Fatal(err.Error())
|
||||||
|
}
|
||||||
|
str := r.(string)
|
||||||
|
if str != "\x07" {
|
||||||
|
t.Fatal("wrong result of 'bget': %v", []byte(str))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestBDeleteCommand(t *testing.T) {
|
||||||
|
db := getTestDB()
|
||||||
|
|
||||||
|
_, err := bdeleteCommand(db, "test_bdelete", "a", "b", "c")
|
||||||
|
if err == nil || err.Error() != "ERR wrong number of arguments for 'bdelete' command" {
|
||||||
|
t.Fatalf("invalid err %v", err)
|
||||||
|
}
|
||||||
|
|
||||||
|
db.BSetBit([]byte("test_bdelete"), 0, 1)
|
||||||
|
db.BSetBit([]byte("test_bdelete"), 1, 1)
|
||||||
|
db.BSetBit([]byte("test_bdelete"), 2, 1)
|
||||||
|
n, err := bdeleteCommand(db, "test_bdelete")
|
||||||
|
if err != nil {
|
||||||
|
t.Fatal(err.Error())
|
||||||
|
}
|
||||||
|
if n.(int64) != 1 {
|
||||||
|
t.Fatalf("wrong result: %v", n)
|
||||||
|
}
|
||||||
|
|
||||||
|
n, err = bdeleteCommand(db, "test_bdelete_not_exit")
|
||||||
|
if err != nil {
|
||||||
|
t.Fatal(err.Error())
|
||||||
|
}
|
||||||
|
if n.(int64) != 0 {
|
||||||
|
t.Fatalf("wrong result: %v", n)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestBSetbitCommand(t *testing.T) {
|
||||||
|
db := getTestDB()
|
||||||
|
_, err := bsetbitCommand(db, "test_bsetbit", "a", "b", "c")
|
||||||
|
if err == nil || err.Error() != "ERR wrong number of arguments for 'bsetbit' command" {
|
||||||
|
t.Fatalf("invalid err %v", err)
|
||||||
|
}
|
||||||
|
n, err := bsetbitCommand(db, "test_bsetbit", "1", "1")
|
||||||
|
if err != nil {
|
||||||
|
t.Fatal(err.Error())
|
||||||
|
}
|
||||||
|
if n.(uint8) != 0 {
|
||||||
|
t.Fatal("wrong result: %v", n)
|
||||||
|
}
|
||||||
|
n, err = db.BGetBit([]byte("test_bsetbit"), 1)
|
||||||
|
if err != nil {
|
||||||
|
t.Fatal(err.Error())
|
||||||
|
}
|
||||||
|
if n.(uint8) != 1 {
|
||||||
|
t.Fatalf("wrong result: %v", n)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestBMsetbitCommand(t *testing.T) {
|
||||||
|
db := getTestDB()
|
||||||
|
_, err := bmsetbitCommand(db, "test_bmsetbit", "a", "b", "c")
|
||||||
|
|
||||||
|
if err == nil || err.Error() != "ERR wrong number of arguments for 'bmsetbit' command" {
|
||||||
|
t.Fatalf("invalid err %v", err)
|
||||||
|
}
|
||||||
|
n, err := bmsetbitCommand(db, "test_bmsetbit", "1", "1", "3", "1")
|
||||||
|
if err != nil {
|
||||||
|
t.Fatal(err.Error())
|
||||||
|
}
|
||||||
|
if n.(int64) != 2 {
|
||||||
|
t.Fatalf("wrong result: %v", n)
|
||||||
|
}
|
||||||
|
}
|
|
@ -41,13 +41,16 @@ func (h *CmdHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) {
|
||||||
}
|
}
|
||||||
|
|
||||||
func (h *CmdHandler) parseReqPath(path string) (db int, cmd string, args []string) {
|
func (h *CmdHandler) parseReqPath(path string) (db int, cmd string, args []string) {
|
||||||
|
/*
|
||||||
|
the proper format of `path` is /cmd/arg1/arg2/../argN or /db/cmd/arg1/arg2/../argN
|
||||||
|
if `path` is the first kind, `db` will be 0
|
||||||
|
*/
|
||||||
substrings := strings.Split(strings.TrimLeft(path, "/"), "/")
|
substrings := strings.Split(strings.TrimLeft(path, "/"), "/")
|
||||||
if len(substrings) == 1 {
|
if len(substrings) == 1 {
|
||||||
return 0, substrings[0], substrings[1:]
|
return 0, substrings[0], substrings[1:]
|
||||||
}
|
}
|
||||||
db, err := strconv.Atoi(substrings[0])
|
db, err := strconv.Atoi(substrings[0])
|
||||||
if err != nil {
|
if err != nil {
|
||||||
// db = 0
|
|
||||||
cmd = substrings[0]
|
cmd = substrings[0]
|
||||||
args = substrings[1:]
|
args = substrings[1:]
|
||||||
} else {
|
} else {
|
||||||
|
|
Loading…
Reference in New Issue