339 lines
8.7 KiB
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])
|
|
}
|
|
}
|
|
}
|