164 lines
3.1 KiB
Go
164 lines
3.1 KiB
Go
package bank_card
|
|
|
|
import (
|
|
"encoding/csv"
|
|
"fmt"
|
|
"github.com/stretchr/testify/assert"
|
|
"io"
|
|
"log"
|
|
"os"
|
|
"strconv"
|
|
"strings"
|
|
"testing"
|
|
)
|
|
|
|
func TestImportBankName(t *testing.T) {
|
|
db := NewDatabase()
|
|
db.OpenFromFile()
|
|
defer db.Close()
|
|
|
|
file, err := os.Open("name.csv")
|
|
if err != nil {
|
|
fmt.Println("Read file err, err =", err)
|
|
return
|
|
}
|
|
defer file.Close()
|
|
|
|
fileinfo, err := file.Stat()
|
|
if err != nil {
|
|
fmt.Println(err)
|
|
return
|
|
}
|
|
|
|
filesize := fileinfo.Size()
|
|
buffer := make([]byte, filesize)
|
|
|
|
_, err = file.Read(buffer)
|
|
if err != nil {
|
|
fmt.Println(err)
|
|
return
|
|
}
|
|
|
|
r := csv.NewReader(strings.NewReader(string(buffer)))
|
|
|
|
for {
|
|
record, err := r.Read()
|
|
if err == io.EOF {
|
|
break
|
|
}
|
|
if err != nil {
|
|
log.Fatal(err)
|
|
}
|
|
|
|
if len(record) == 2 && len(record[0]) > 0 && len(record[1]) > 0 {
|
|
db.insertDataToBankTable(&Bank{BankCode: record[0], BankName: record[1]})
|
|
}
|
|
|
|
fmt.Println(record)
|
|
}
|
|
}
|
|
|
|
func TestImportBankCard(t *testing.T) {
|
|
db := NewDatabase()
|
|
db.OpenFromFile()
|
|
defer db.Close()
|
|
|
|
file, err := os.Open("bin.csv")
|
|
if err != nil {
|
|
fmt.Println("Read file err, err =", err)
|
|
return
|
|
}
|
|
defer file.Close()
|
|
|
|
fileInfo, err := file.Stat()
|
|
if err != nil {
|
|
fmt.Println(err)
|
|
return
|
|
}
|
|
|
|
filesize := fileInfo.Size()
|
|
buffer := make([]byte, filesize)
|
|
|
|
_, err = file.Read(buffer)
|
|
if err != nil {
|
|
fmt.Println(err)
|
|
return
|
|
}
|
|
|
|
r := csv.NewReader(strings.NewReader(string(buffer)))
|
|
|
|
for {
|
|
record, err := r.Read()
|
|
if err == io.EOF {
|
|
break
|
|
}
|
|
if err != nil {
|
|
log.Fatal(err)
|
|
}
|
|
|
|
if len(record) == 4 && len(record[0]) > 0 && len(record[1]) > 0 && len(record[2]) > 0 && len(record[3]) > 0 {
|
|
bin, _ := strconv.Atoi(record[0])
|
|
cardLength, _ := strconv.Atoi(record[3])
|
|
db.insertDataToBankCardTable(&BankCard{
|
|
BIN: uint32(bin),
|
|
BankCode: record[1],
|
|
CardType: record[2],
|
|
CardLength: uint32(cardLength),
|
|
})
|
|
}
|
|
|
|
fmt.Println(record)
|
|
}
|
|
}
|
|
|
|
func TestImportBankCardSingle(t *testing.T) {
|
|
db := NewDatabase()
|
|
db.OpenFromFile()
|
|
defer db.Close()
|
|
|
|
binStr := "620114|620187|620046"
|
|
strs := strings.Split(binStr, "|")
|
|
var bins []uint32
|
|
for _, str := range strs {
|
|
bin, _ := strconv.Atoi(str)
|
|
bins = append(bins, uint32(bin))
|
|
}
|
|
|
|
bankCode := "ABC"
|
|
cardType := "DC"
|
|
cardLength := 13 + len(strs[0])
|
|
for _, data := range bins {
|
|
bankData := &BankCard{
|
|
BIN: data,
|
|
BankCode: bankCode,
|
|
CardType: cardType,
|
|
CardLength: uint32(cardLength),
|
|
}
|
|
db.insertDataToBankCardTable(bankData)
|
|
fmt.Println(bankData)
|
|
}
|
|
}
|
|
|
|
func TestOpenFromEmbed(t *testing.T) {
|
|
db := NewDatabase()
|
|
defer db.Close()
|
|
|
|
err := db.OpenFromEmbed()
|
|
assert.Nil(t, err)
|
|
|
|
var bank *Bank
|
|
bank = db.queryBank("ABC")
|
|
assert.NotNil(t, bank)
|
|
assert.Equal(t, bank.BankCode, "ABC")
|
|
assert.Equal(t, bank.BankName, "中国农业银行")
|
|
|
|
var bankCard *BankCard
|
|
bankCard = db.queryBankCard(620114)
|
|
assert.NotNil(t, bankCard)
|
|
assert.Equal(t, bankCard.BankCode, "ICBC")
|
|
assert.Equal(t, bankCard.BankName, "中国工商银行")
|
|
assert.Equal(t, bankCard.CardType, "PC")
|
|
assert.Equal(t, bankCard.CardName, "")
|
|
assert.Equal(t, bankCard.CardLength, uint32(19))
|
|
}
|