Files
jx-callback/business/jxutils/jxutils_test.go

339 lines
8.7 KiB
Go

package jxutils
import (
"fmt"
"testing"
"git.rosy.net.cn/baseapi/utils"
"git.rosy.net.cn/jx-callback/business/model"
"git.rosy.net.cn/jx-callback/globals/testinit"
)
func init() {
testinit.Init()
}
func TestEarthDistance(t *testing.T) {
lng1, lat1 := 118.796877, 32.060255
lng2, lat2 := 116.407395, 39.904211
distance := EarthDistance(lng1, lat1, lng2, lat2)
fmt.Print(distance)
}
func TestMapValue2Scope(t *testing.T) {
result := MapValue2Scope(-4, -10, 0, 0, 100)
if result != 60 {
t.Fatalf("result:%d is wrong", result)
}
result = MapValue2Scope(-4, 0, 10, 0, 100)
if result != 0 {
t.Fatalf("result:%d is wrong", result)
}
result = MapValue2Scope(100, 0, 10, 0, 100)
if result != 100 {
t.Fatalf("result:%d is wrong", result)
}
}
func TestGetNameAndUnitFromSkuName(t *testing.T) {
name, unit := GetNameAndUnitFromSkuName("【满59免运】蒜苔肉丝约400g/个(蒜苔约250g 肉丝约150g/份)")
if name != "【满59免运】蒜苔肉丝约400g" || unit != "个" {
t.Fatalf("TestGetNameAndUnitFromSkuName wrong, name:%s, unit:%s", name, unit)
}
name, unit = GetNameAndUnitFromSkuName("【满59免运】蒜苔肉丝约400g/g份(蒜苔约250g 肉丝约150g/份)")
if name != "【满59免运】蒜苔肉丝约400g" || unit != "g" {
t.Fatalf("TestGetNameAndUnitFromSkuName wrong, name:%s, unit:%s", name, unit)
}
name, unit = GetNameAndUnitFromSkuName("【满59免运】蒜苔肉丝约400g/个")
if name != "【满59免运】蒜苔肉丝约400g" || unit != "个" {
t.Fatalf("TestGetNameAndUnitFromSkuName wrong, name:%s, unit:%s", name, unit)
}
name, unit = GetNameAndUnitFromSkuName("【满59免运】蒜苔肉丝约400g/")
if name != "【满59免运】蒜苔肉丝约400g" || unit != "份" {
t.Fatalf("TestGetNameAndUnitFromSkuName wrong, name:%s, unit:%s", name, unit)
}
name, unit = GetNameAndUnitFromSkuName("【满59免运】蒜苔肉丝约400g")
if name != "【满59免运】蒜苔肉丝约400g" || unit != "份" {
t.Fatalf("TestGetNameAndUnitFromSkuName wrong, name:%s, unit:%s", name, unit)
}
}
func TestSplitSkuName(t *testing.T) {
prefix, name, comment, specUnit, unit, specQuality := SplitSkuName("[好吃]黄骨鱼约600G/非份(黄辣丁、昂刺鱼)")
if prefix != "好吃" || name != "黄骨鱼" || comment != "黄辣丁、昂刺鱼" || specUnit != "g" || unit != "非份" || specQuality != 600 {
t.Fatalf("SplitSkuName wrong, name:%s, unit:%s", name, unit)
}
prefix, name, comment, specUnit, unit, specQuality = SplitSkuName("【满59免运】蒜苔肉丝约400g")
if prefix != "满59免运" || name != "蒜苔肉丝" || comment != "" || specUnit != "g" || unit != "份" || specQuality != 400 {
t.Fatalf("SplitSkuName wrong, name:%s, unit:%s", name, unit)
}
prefix, name, comment, specUnit, unit, specQuality = SplitSkuName("【满59免运】蒜苔肉丝约400.1ML/")
if prefix != "满59免运" || name != "蒜苔肉丝" || comment != "" || specUnit != "ml" || unit != "份" || specQuality != 400.1 {
t.Fatalf("SplitSkuName wrong, name:%s, unit:%s", name, unit)
}
}
func TestSplitUniversalOrderID(t *testing.T) {
testData := [][]interface{}{
[]interface{}{
"800402581000221",
"800402581000221",
model.VendorIDJD,
},
[]interface{}{
"3022716176275221584" + "|" + utils.Int2Str(model.VendorIDJD),
"3022716176275221584",
model.VendorIDJD,
},
[]interface{}{
"3022716176275221584",
"3022716176275221584",
model.VendorIDELM,
},
[]interface{}{
"15380342248732",
"15380342248732",
model.VendorIDEBAI,
},
[]interface{}{
"33437032333978492",
"33437032333978492",
model.VendorIDMTWM,
},
[]interface{}{
"5287873015048",
"5287873015048",
model.VendorIDWSC,
},
}
for _, v := range testData {
universalOrderID := v[0].(string)
desiredOrderID := v[1].(string)
desiredVendorID := v[2].(int)
orderID, vendorID := SplitUniversalOrderID(universalOrderID)
if orderID != desiredOrderID || vendorID != desiredVendorID {
t.Fatalf("%s is not ok, orderID:%s, desiredOrderID:%s, vendorID:%d, desiredVendorID:%d", universalOrderID, orderID, desiredOrderID, vendorID, desiredVendorID)
}
}
}
func TestGetPossibleVendorIDFromVendorOrderID(t *testing.T) {
testData := [][]interface{}{
[]interface{}{
"800402581000221",
model.VendorIDJD,
},
[]interface{}{
"X00402581000221",
model.VendorIDUnknown,
},
[]interface{}{
"8004025810002210",
model.VendorIDUnknown,
},
[]interface{}{
"3022716176275221584",
model.VendorIDEBAI,
},
[]interface{}{
"302271617627522158X",
model.VendorIDUnknown,
},
[]interface{}{
"15380342248732",
model.VendorIDEBAI,
},
[]interface{}{
"33437032333978492",
model.VendorIDMTWM,
},
[]interface{}{
"5287873015048",
model.VendorIDWSC,
},
}
for _, v := range testData {
universalOrderID := v[0].(string)
desiredVendorID := v[1].(int)
vendorID := GetPossibleVendorIDFromVendorOrderID(universalOrderID)
if vendorID != desiredVendorID {
t.Fatalf("%s is not ok, should be:%d, but it's:%d", universalOrderID, desiredVendorID, vendorID)
}
}
}
func TestGetLastTimeFromList(t *testing.T) {
timeList := []string{
"08:00:00",
"23:00:00",
}
time1 := GetLastTimeFromList(utils.Str2Time("2019-06-17 07:59:59"), timeList)
if time1.Sub(utils.Str2Time("2019-06-16 23:00:00")) != 0 {
t.Fatal("GetLastTimeFromList wrong1")
}
time1 = GetLastTimeFromList(utils.Str2Time("2019-06-17 08:59:59"), timeList)
if time1.Sub(utils.Str2Time("2019-06-17 08:00:00")) != 0 {
t.Fatal("GetLastTimeFromList wrong2")
}
time1 = GetNextTimeFromList(utils.Str2Time("2019-06-17 08:59:59"), timeList)
if time1.Sub(utils.Str2Time("2019-06-17 23:00:00")) != 0 {
t.Fatal("GetNextTimeFromList wrong1")
}
time1 = GetNextTimeFromList(utils.Str2Time("2019-06-17 23:01:59"), timeList)
if time1.Sub(utils.Str2Time("2019-06-18 08:00:00")) != 0 {
t.Fatal("GetNextTimeFromList wrong2")
}
}
func TestGetShortNameFromURL(t *testing.T) {
for _, v := range [][]string{
[]string{
"20b569a7cf7e8045b2d7bb550900cf86.jpeg",
"http://image.jxc4.com/20b569a7cf7e8045b2d7bb550900cf86.jpeg?imageMogr2/thumbnail/x800/gravity/Center/crop/800x800",
},
[]string{
"91b8dcb5cb6b462bc96078b7210470b7.jpg",
"http://image.jxc4.com/image/91b8dcb5cb6b462bc96078b7210470b7.jpg",
},
} {
if str := GetShortNameFromURL(v[1]); str != v[0] {
t.Errorf("%s failed, result:%s, expect:%s", v[1], str, v[0])
}
}
}
func TestCalcStageValue(t *testing.T) {
type tTestType struct {
DesiredValue float64
Params1 [][]float64
Params2 float64
}
priceStage := [][]float64{
[]float64{
7,
300,
},
[]float64{
5,
200,
},
[]float64{
3,
100,
},
}
for _, v := range []*tTestType{
&tTestType{
DesiredValue: 0,
Params1: priceStage,
Params2: 3,
},
&tTestType{
DesiredValue: 0,
Params1: priceStage,
Params2: 0,
},
&tTestType{
DesiredValue: 200,
Params1: priceStage,
Params2: 5,
},
&tTestType{
DesiredValue: 400,
Params1: priceStage,
Params2: 5.01,
},
&tTestType{
DesiredValue: 600,
Params1: priceStage,
Params2: 7,
},
} {
value := CalcStageValue(v.Params1, v.Params2)
if value != v.DesiredValue {
t.Errorf("DesiredValue:%f, value:%f", v.DesiredValue, value)
}
}
}
func TestGetOneEmailFromStr(t *testing.T) {
for _, v := range [][]string{
[]string{
"test@kk.com",
"中人国test@kk.com",
},
[]string{
"",
"91b8dcb5cb6b462bc96078b7210470b7.jpg",
},
[]string{
"test@kk.com",
"中人国test@kk.com2342",
},
[]string{
"donald.trump_1-3@163.com",
"中人国donald.trump_1-3@163.com2342",
},
} {
if str := GetOneEmailFromStr(v[1]); str != v[0] {
t.Errorf("%s failed, result:%s, expect:%s", v[1], str, v[0])
}
}
}
func TestGenFakeUPC(t *testing.T) {
for _, v := range [][]string{
[]string{
"6666000298034",
"29803",
},
[]string{
"6666076543212",
"7654321",
},
} {
if str := GenFakeUPC(int(utils.Str2Int64(v[1]))); str != v[0] {
t.Errorf("%s failed, result:%s, expect:%s", v[1], str, v[0])
}
}
if !IsUpcValid("6666076543212") {
t.Fatal("wrong1")
}
if IsUpcValid("6666076543210") {
t.Fatal("wrong2")
}
}
func TestComposeSkuNameOriginal(t *testing.T) {
for _, v := range [][]string{
[]string{
"单独商品名3g/件(商品注释)",
"",
"单独商品名",
"商品注释",
"件",
"3.0",
"g",
"0",
},
[]string{
"[高级]单独商品名约3g/份",
"高级",
"单独商品名",
"",
"份",
"3.0",
"g",
"0",
},
} {
if str := ComposeSkuNameOriginal(v[1], v[2], v[3], v[4], float32(utils.Str2Float64(v[5])), v[6], int(utils.Str2Int64(v[7]))); str != v[0] {
t.Errorf("%s failed, result:%s, expect:%s", v[1], str, v[0])
}
}
}