fix flags loading
This commit is contained in:
@ -1,18 +1,18 @@
|
||||
package itemprops
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"github.com/rs/zerolog"
|
||||
"github.com/rs/zerolog/log"
|
||||
"github.com/shopspring/decimal"
|
||||
"github.com/stretchr/testify/suite"
|
||||
"os"
|
||||
"testing"
|
||||
"time"
|
||||
"encoding/json"
|
||||
"github.com/rs/zerolog"
|
||||
"github.com/rs/zerolog/log"
|
||||
"github.com/shopspring/decimal"
|
||||
"github.com/stretchr/testify/suite"
|
||||
"os"
|
||||
"testing"
|
||||
"time"
|
||||
)
|
||||
|
||||
type IpTestSuite struct {
|
||||
suite.Suite
|
||||
suite.Suite
|
||||
}
|
||||
|
||||
// метод для установки тестовых данных для всего набора, запускается до всего прочего
|
||||
@ -30,179 +30,180 @@ func (suite *IpTestSuite) SetupTest() {}
|
||||
func (suite *IpTestSuite) TearDownTest() {}
|
||||
|
||||
func TestApi(t *testing.T) {
|
||||
tests := new(IpTestSuite)
|
||||
suite.Run(t, tests)
|
||||
tests := new(IpTestSuite)
|
||||
suite.Run(t, tests)
|
||||
}
|
||||
|
||||
func (suite *IpTestSuite) TestMaterialWeightAndVolume() {
|
||||
// плотность https://tekkos.ru/katalog/poleznaya-informatsiya/tablica-plotnosti-stali-kg-m3.html
|
||||
// ударная вязкость https://nposanef.ru/DOCUMENTS/PB-03-605-03/PB-03-605-03_Tab-2.6.pdf
|
||||
// температура плавления http://zaozmi.ru/polezno/temperatura_plavleniya_metallov.html
|
||||
// температура кипения http://temperatures.ru/pages/temperatura_plavleniya_i_kipeniya
|
||||
// Пределы прочности некоторых материалов https://sevparitet.ru/raznoe/koefficient-uprugosti-tablica.html
|
||||
// плотность https://tekkos.ru/katalog/poleznaya-informatsiya/tablica-plotnosti-stali-kg-m3.html
|
||||
// ударная вязкость https://nposanef.ru/DOCUMENTS/PB-03-605-03/PB-03-605-03_Tab-2.6.pdf
|
||||
// температура плавления http://zaozmi.ru/polezno/temperatura_plavleniya_metallov.html
|
||||
// температура кипения http://temperatures.ru/pages/temperatura_plavleniya_i_kipeniya
|
||||
// Пределы прочности некоторых материалов https://sevparitet.ru/raznoe/koefficient-uprugosti-tablica.html
|
||||
|
||||
metalMaterialFlags := MaterialFlags{
|
||||
ConductsElictricity: true,
|
||||
BlocksLiquid: true,
|
||||
AcidResistant: true,
|
||||
BlocksGas: true,
|
||||
Flammable: false,
|
||||
ConductsHeat: true,
|
||||
Radiates: true,
|
||||
}
|
||||
metalMaterialFlags := MaterialFlags{
|
||||
ConductsElictricity: true,
|
||||
BlocksLiquid: true,
|
||||
AcidResistant: true,
|
||||
BlocksGas: true,
|
||||
Flammable: false,
|
||||
ConductsHeat: true,
|
||||
Radiates: true,
|
||||
}
|
||||
|
||||
woodMaterialFlags := MaterialFlags{
|
||||
ConductsElictricity: false,
|
||||
BlocksLiquid: true,
|
||||
AcidResistant: false,
|
||||
BlocksGas: true,
|
||||
Flammable: true,
|
||||
ConductsHeat: false,
|
||||
Radiates: false,
|
||||
}
|
||||
woodMaterialFlags := MaterialFlags{
|
||||
ConductsElictricity: false,
|
||||
BlocksLiquid: true,
|
||||
AcidResistant: false,
|
||||
BlocksGas: true,
|
||||
Flammable: true,
|
||||
ConductsHeat: false,
|
||||
Radiates: false,
|
||||
}
|
||||
|
||||
teststeel := Material{
|
||||
Name: "teststeel",
|
||||
Flags: metalMaterialFlags,
|
||||
Density: DimensionItemDensity{decimal.NewFromInt(7800)},
|
||||
FractureToughness: DimensionFractureToughness{decimal.NewFromInt(30)},
|
||||
MeltingPoint: DimensionItemNullTemperature{decimal.NullDecimal{decimal.NewFromInt(1400), true}},
|
||||
BoilingPoint: DimensionItemNullTemperature{decimal.NullDecimal{decimal.NewFromInt(3200), true}},
|
||||
}
|
||||
teststeel := Material{
|
||||
Name: "teststeel",
|
||||
Flags: metalMaterialFlags,
|
||||
Density: DimensionItemDensity{decimal.NewFromInt(7800)},
|
||||
FractureToughness: DimensionFractureToughness{decimal.NewFromInt(30)},
|
||||
MeltingPoint: DimensionItemNullTemperature{decimal.NullDecimal{decimal.NewFromInt(1400), true}},
|
||||
BoilingPoint: DimensionItemNullTemperature{decimal.NullDecimal{decimal.NewFromInt(3200), true}},
|
||||
}
|
||||
|
||||
testOakWood := Material{
|
||||
Name: "testoakwood",
|
||||
Flags: woodMaterialFlags,
|
||||
Density: DimensionItemDensity{decimal.NewFromInt(700)},
|
||||
FractureToughness: DimensionFractureToughness{decimal.NewFromFloat(4.5)},
|
||||
MeltingPoint: DimensionItemNullTemperature{decimal.NullDecimal{decimal.NewFromInt(600), true}}, //загорается при 600 град Цельсия
|
||||
}
|
||||
testOakWood := Material{
|
||||
Name: "testoakwood",
|
||||
Flags: woodMaterialFlags,
|
||||
Density: DimensionItemDensity{decimal.NewFromInt(700)},
|
||||
FractureToughness: DimensionFractureToughness{decimal.NewFromFloat(4.5)},
|
||||
MeltingPoint: DimensionItemNullTemperature{decimal.NullDecimal{decimal.NewFromInt(600), true}}, //загорается при 600 град Цельсия
|
||||
}
|
||||
|
||||
testCube := ItemPhysics{
|
||||
Material: teststeel,
|
||||
DimensionItemRigidity: DimensionItemRigidity{decimal.NewFromInt(65)},
|
||||
DimensionItemSize: DimensionItemSize{
|
||||
Width: decimal.NewFromFloat(0.1),
|
||||
Height: decimal.NewFromFloat(0.1),
|
||||
Depth: decimal.NewNullDecimal(decimal.NewFromFloat(0.1)),
|
||||
Thickness: decimal.NullDecimal{},
|
||||
},
|
||||
DimensionItemTemperature: DimensionItemTemperature{decimal.NewFromInt(20)},
|
||||
}
|
||||
testCube := ItemPhysics{
|
||||
Material: teststeel,
|
||||
DimensionItemRigidity: DimensionItemRigidity{decimal.NewFromInt(65)},
|
||||
DimensionItemSize: DimensionItemSize{
|
||||
Width: decimal.NewFromFloat(0.1),
|
||||
Height: decimal.NewFromFloat(0.1),
|
||||
Depth: decimal.NewNullDecimal(decimal.NewFromFloat(0.1)),
|
||||
Thickness: decimal.NullDecimal{},
|
||||
},
|
||||
DimensionItemTemperature: DimensionItemTemperature{decimal.NewFromInt(20)},
|
||||
}
|
||||
|
||||
suite.Equal(decimal.NewFromFloat(7.8).String(), testCube.Weight().String())
|
||||
suite.Equal(decimal.NewFromFloat(0.001).String(), testCube.Volume().String())
|
||||
suite.Equal(decimal.NewFromFloat(7.8).String(), testCube.Weight().String())
|
||||
suite.Equal(decimal.NewFromFloat(0.001).String(), testCube.Volume().String())
|
||||
|
||||
testOakCube := ItemPhysics{
|
||||
Material: testOakWood,
|
||||
DimensionItemRigidity: DimensionItemRigidity{decimal.NewFromInt(4)},
|
||||
DimensionItemSize: DimensionItemSize{
|
||||
Width: decimal.NewFromFloat(0.1),
|
||||
Height: decimal.NewFromFloat(0.1),
|
||||
Depth: decimal.NewNullDecimal(decimal.NewFromFloat(0.1)),
|
||||
Thickness: decimal.NullDecimal{},
|
||||
},
|
||||
DimensionItemTemperature: DimensionItemTemperature{decimal.NewFromInt(20)},
|
||||
}
|
||||
testOakCube := ItemPhysics{
|
||||
Material: testOakWood,
|
||||
DimensionItemRigidity: DimensionItemRigidity{decimal.NewFromInt(4)},
|
||||
DimensionItemSize: DimensionItemSize{
|
||||
Width: decimal.NewFromFloat(0.1),
|
||||
Height: decimal.NewFromFloat(0.1),
|
||||
Depth: decimal.NewNullDecimal(decimal.NewFromFloat(0.1)),
|
||||
Thickness: decimal.NullDecimal{},
|
||||
},
|
||||
DimensionItemTemperature: DimensionItemTemperature{decimal.NewFromInt(20)},
|
||||
}
|
||||
|
||||
//oakwood is ~10 times lighter than steel
|
||||
suite.Equal(decimal.NewFromFloat(0.7).String(), testOakCube.Weight().String())
|
||||
suite.Equal(decimal.NewFromFloat(0.001).String(), testOakCube.Volume().String())
|
||||
//oakwood is ~10 times lighter than steel
|
||||
suite.Equal(decimal.NewFromFloat(0.7).String(), testOakCube.Weight().String())
|
||||
suite.Equal(decimal.NewFromFloat(0.001).String(), testOakCube.Volume().String())
|
||||
|
||||
testCuirass := ItemPhysics{
|
||||
Material: teststeel,
|
||||
DimensionItemRigidity: DimensionItemRigidity{decimal.NewFromInt(55)},
|
||||
DimensionItemSize: DimensionItemSize{
|
||||
Width: decimal.NewFromFloat(0.5), //60 cm wide
|
||||
Height: decimal.NewFromFloat(0.8), //80 cm high
|
||||
Depth: decimal.NewNullDecimal(decimal.NewFromFloat(0.4)), //50 cm deep
|
||||
Thickness: decimal.NewNullDecimal(decimal.NewFromFloat(0.001)), // 1mm thick
|
||||
},
|
||||
DimensionItemTemperature: DimensionItemTemperature{},
|
||||
}
|
||||
testCuirass := ItemPhysics{
|
||||
Material: teststeel,
|
||||
DimensionItemRigidity: DimensionItemRigidity{decimal.NewFromInt(55)},
|
||||
DimensionItemSize: DimensionItemSize{
|
||||
Width: decimal.NewFromFloat(0.5), //60 cm wide
|
||||
Height: decimal.NewFromFloat(0.8), //80 cm high
|
||||
Depth: decimal.NewNullDecimal(decimal.NewFromFloat(0.4)), //50 cm deep
|
||||
Thickness: decimal.NewNullDecimal(decimal.NewFromFloat(0.001)), // 1mm thick
|
||||
},
|
||||
DimensionItemTemperature: DimensionItemTemperature{},
|
||||
}
|
||||
|
||||
//12.1992 kg HEAVY ARMOR IS HEAVY
|
||||
suite.Equal(decimal.NewFromFloat(12.1992).String(), testCuirass.Weight().String())
|
||||
//0.001564 m3 of steel
|
||||
suite.Equal(decimal.NewFromFloat(0.001564).String(), testCuirass.Volume().String())
|
||||
//12.1992 kg HEAVY ARMOR IS HEAVY
|
||||
suite.Equal(decimal.NewFromFloat(12.1992).String(), testCuirass.Weight().String())
|
||||
//0.001564 m3 of steel
|
||||
suite.Equal(decimal.NewFromFloat(0.001564).String(), testCuirass.Volume().String())
|
||||
}
|
||||
|
||||
func (suite *IpTestSuite) TestMaterialSerialization() {
|
||||
metalMaterialFlags := MaterialFlags{
|
||||
ConductsElictricity: true,
|
||||
BlocksLiquid: true,
|
||||
AcidResistant: true,
|
||||
BlocksGas: true,
|
||||
Flammable: false,
|
||||
ConductsHeat: true,
|
||||
Radiates: true,
|
||||
}
|
||||
metalMaterialFlags := MaterialFlags{
|
||||
ConductsElictricity: true,
|
||||
BlocksLiquid: true,
|
||||
AcidResistant: true,
|
||||
BlocksGas: true,
|
||||
Flammable: false,
|
||||
ConductsHeat: true,
|
||||
Radiates: true,
|
||||
}
|
||||
|
||||
woodMaterialFlags := MaterialFlags{
|
||||
ConductsElictricity: false,
|
||||
BlocksLiquid: true,
|
||||
AcidResistant: false,
|
||||
BlocksGas: true,
|
||||
Flammable: true,
|
||||
ConductsHeat: false,
|
||||
Radiates: false,
|
||||
}
|
||||
woodMaterialFlags := MaterialFlags{
|
||||
ConductsElictricity: false,
|
||||
BlocksLiquid: true,
|
||||
AcidResistant: false,
|
||||
BlocksGas: true,
|
||||
Flammable: true,
|
||||
ConductsHeat: false,
|
||||
Radiates: false,
|
||||
}
|
||||
|
||||
teststeel := Material{
|
||||
Name: "teststeel",
|
||||
Flags: metalMaterialFlags,
|
||||
Density: DimensionItemDensity{decimal.NewFromInt(7800)},
|
||||
FractureToughness: DimensionFractureToughness{decimal.NewFromInt(30)},
|
||||
MeltingPoint: DimensionItemNullTemperature{decimal.NullDecimal{decimal.NewFromInt(1400), true}},
|
||||
BoilingPoint: DimensionItemNullTemperature{decimal.NullDecimal{decimal.NewFromInt(3200), true}},
|
||||
}
|
||||
teststeel := Material{
|
||||
Name: "teststeel",
|
||||
Flags: metalMaterialFlags,
|
||||
Density: DimensionItemDensity{decimal.NewFromInt(7800)},
|
||||
FractureToughness: DimensionFractureToughness{decimal.NewFromInt(30)},
|
||||
MeltingPoint: DimensionItemNullTemperature{decimal.NullDecimal{decimal.NewFromInt(1400), true}},
|
||||
BoilingPoint: DimensionItemNullTemperature{decimal.NullDecimal{decimal.NewFromInt(3200), true}},
|
||||
}
|
||||
|
||||
testOakWood := Material{
|
||||
Name: "testoakwood",
|
||||
Flags: woodMaterialFlags,
|
||||
Density: DimensionItemDensity{decimal.NewFromInt(700)},
|
||||
FractureToughness: DimensionFractureToughness{decimal.NewFromFloat(4.5)},
|
||||
MeltingPoint: DimensionItemNullTemperature{decimal.NullDecimal{decimal.NewFromInt(600), true}}, //загорается при 600 град Цельсия
|
||||
}
|
||||
bytes, err := json.Marshal(teststeel)
|
||||
suite.NoError(err)
|
||||
suite.Equal(
|
||||
`{"name":"teststeel","material_flags":{"conducts_elictricity":true,"blocks_liquid":true,"acid_resistant":true,"blocks_gas":true,"flammable":false,"conducts_heat":true,"radiates":true},"density":"7800","fracture_toughness":"30","melting_point":"1400","boiling_point":"3200"}`,
|
||||
string(bytes),
|
||||
)
|
||||
testOakWood := Material{
|
||||
Name: "testoakwood",
|
||||
Flags: woodMaterialFlags,
|
||||
Density: DimensionItemDensity{decimal.NewFromInt(700)},
|
||||
FractureToughness: DimensionFractureToughness{decimal.NewFromFloat(4.5)},
|
||||
MeltingPoint: DimensionItemNullTemperature{decimal.NullDecimal{decimal.NewFromInt(600), true}}, //загорается при 600 град Цельсия
|
||||
}
|
||||
bytes, err := json.Marshal(teststeel)
|
||||
suite.NoError(err)
|
||||
suite.Equal(
|
||||
`{"name":"teststeel","material_flags":{"conducts_elictricity":true,"blocks_liquid":true,"acid_resistant":true,"blocks_gas":true,"flammable":false,"conducts_heat":true,"radiates":true},"density":"7800","fracture_toughness":"30","melting_point":"1400","boiling_point":"3200"}`,
|
||||
string(bytes),
|
||||
)
|
||||
|
||||
bytes, err = json.Marshal(testOakWood)
|
||||
suite.NoError(err)
|
||||
suite.Equal(`{"name":"testoakwood","material_flags":{"conducts_elictricity":false,"blocks_liquid":true,"acid_resistant":false,"blocks_gas":true,"flammable":true,"conducts_heat":false,"radiates":false},"density":"700","fracture_toughness":"4.5","melting_point":"600","boiling_point":null}`,
|
||||
string(bytes),
|
||||
)
|
||||
bytes, err = json.Marshal(testOakWood)
|
||||
suite.NoError(err)
|
||||
suite.Equal(`{"name":"testoakwood","material_flags":{"conducts_elictricity":false,"blocks_liquid":true,"acid_resistant":false,"blocks_gas":true,"flammable":true,"conducts_heat":false,"radiates":false},"density":"700","fracture_toughness":"4.5","melting_point":"600","boiling_point":null}`,
|
||||
string(bytes),
|
||||
)
|
||||
}
|
||||
|
||||
func (suite *IpTestSuite) TestMaterialDeserialization() {
|
||||
|
||||
logger := log.Output(zerolog.ConsoleWriter{Out: os.Stdout, TimeFormat: time.RFC3339})
|
||||
mm, err := NewMaterialMap("../../..", logger)
|
||||
suite.NoError(err)
|
||||
logger := log.Output(zerolog.ConsoleWriter{Out: os.Stdout, TimeFormat: time.RFC3339})
|
||||
mm, err := NewMaterialMap("../../..", logger)
|
||||
suite.NoError(err)
|
||||
|
||||
metalMaterialFlags := MaterialFlags{
|
||||
ConductsElictricity: true,
|
||||
BlocksLiquid: true,
|
||||
AcidResistant: true,
|
||||
BlocksGas: true,
|
||||
Flammable: false,
|
||||
ConductsHeat: true,
|
||||
Radiates: true,
|
||||
}
|
||||
metalMaterialFlags := MaterialFlags{
|
||||
ConductsElictricity: true,
|
||||
BlocksLiquid: true,
|
||||
AcidResistant: true,
|
||||
BlocksGas: true,
|
||||
Flammable: false,
|
||||
ConductsHeat: true,
|
||||
Radiates: true,
|
||||
}
|
||||
|
||||
teststeel := Material{
|
||||
Name: "teststeel",
|
||||
Flags: metalMaterialFlags,
|
||||
Density: DimensionItemDensity{decimal.NewFromInt(7800)},
|
||||
FractureToughness: DimensionFractureToughness{decimal.NewFromInt(30)},
|
||||
MeltingPoint: DimensionItemNullTemperature{decimal.NullDecimal{decimal.NewFromInt(1400), true}},
|
||||
BoilingPoint: DimensionItemNullTemperature{decimal.NullDecimal{decimal.NewFromInt(3200), true}},
|
||||
}
|
||||
teststeel := Material{
|
||||
Name: "steel",
|
||||
Flags: metalMaterialFlags,
|
||||
Density: DimensionItemDensity{decimal.NewFromInt(7800)},
|
||||
FractureToughness: DimensionFractureToughness{decimal.NewFromInt(30)},
|
||||
MeltingPoint: DimensionItemNullTemperature{decimal.NullDecimal{decimal.NewFromInt(1400), true}},
|
||||
BoilingPoint: DimensionItemNullTemperature{decimal.NullDecimal{decimal.NewFromInt(3200), true}},
|
||||
}
|
||||
|
||||
_ = teststeel
|
||||
_ = mm
|
||||
loadedsteel := mm["steel"]
|
||||
suite.Equalf(teststeel, *loadedsteel, "error: %s")
|
||||
_ = mm
|
||||
}
|
||||
|
Reference in New Issue
Block a user