insee_number_translator/data/insee_data_test.go

184 lines
4.7 KiB
Go

package data
import (
"testing"
"time"
"github.com/stretchr/testify/assert"
)
func TestNewInseeData_ValidForeign(t *testing.T) {
assert := assert.New(t)
number := "269059913116714"
insee, err := NewInseeData(number)
if err != nil {
t.Error(err)
}
valid, err := insee.IsValid()
if err != nil {
t.Error(err)
}
assert.True(valid)
assert.Equal(number, insee.InseeNumber)
assert.Equal(Female, insee.Gender)
assert.Equal(1969, insee.Year)
assert.Equal(time.Month(5), insee.Month)
assert.Equal(Unknown, insee.Department)
assert.Equal("", insee.City)
assert.True(insee.Foreign)
assert.Equal([]string{"BELGIQUE"}, insee.Countries)
assert.Equal(167, insee.OrderOfBirth)
assert.Equal(14, insee.ControlKey)
assert.Equal("131", insee.CountryCode)
assert.Equal("", insee.CityCode)
assert.Equal("Europe", insee.Continent)
}
func TestNewInseeData_InvalidFrench(t *testing.T) {
assert := assert.New(t)
number := "168127982980507"
insee, err := NewInseeData(number)
if err != nil {
t.Error(err)
}
valid, err := insee.IsValid()
if err != nil {
t.Error(err)
}
assert.False(valid)
assert.Equal(number, insee.InseeNumber)
assert.Equal(Male, insee.Gender)
assert.Equal(1968, insee.Year)
assert.Equal(time.Month(12), insee.Month)
assert.Equal("Deux-Sèvres", insee.Department)
assert.Equal(Unknown, insee.City)
assert.False(insee.Foreign)
assert.Equal([]string{"FRANCE"}, insee.Countries)
assert.Equal(805, insee.OrderOfBirth)
assert.Equal(7, insee.ControlKey)
assert.Equal("", insee.CountryCode)
assert.Equal("829", insee.CityCode)
assert.Equal("Europe", insee.Continent)
}
func TestNewInseeData_ValidFrench(t *testing.T) {
assert := assert.New(t)
number := "201120100512334"
insee, err := NewInseeData(number)
if err != nil {
t.Error(err)
}
valid, err := insee.IsValid()
if err != nil {
t.Error(err)
}
assert.True(valid)
assert.Equal(number, insee.InseeNumber)
assert.Equal(Female, insee.Gender)
assert.Equal(2001, insee.Year)
assert.Equal(time.Month(12), insee.Month)
assert.Equal("Ain", insee.Department)
assert.NotNil(insee.City)
assert.Equal("Ambérieux-en-Dombes", insee.City)
assert.False(insee.Foreign)
assert.Equal([]string{"FRANCE"}, insee.Countries)
assert.Equal(123, insee.OrderOfBirth)
assert.Equal(34, insee.ControlKey)
assert.Equal(insee.CountryCode, "")
assert.Equal(insee.CityCode, "005")
assert.Equal("Europe", insee.Continent)
}
func TestNewInseeData_ValidMultiCountry(t *testing.T) {
assert := assert.New(t)
number := "144089943287340"
insee, err := NewInseeData(number)
if err != nil {
t.Error(err)
}
valid, err := insee.IsValid()
if err != nil {
t.Error(err)
}
assert.True(valid)
assert.Equal(number, insee.InseeNumber)
assert.Equal(Male, insee.Gender)
assert.Equal(1944, insee.Year)
assert.Equal(time.Month(8), insee.Month)
assert.Equal(Unknown, insee.Department)
assert.Equal("", insee.City)
assert.True(insee.Foreign)
expectedCountry := []string{"PORTO RICO", "TERR. DES ETATS-UNIS D'AMERIQUE EN AMERIQUE", "VIERGES DES ETATS-UNIS (ILES)"}
assert.Equal(expectedCountry, insee.Countries)
assert.Equal("Amérique", insee.Continent)
assert.Equal(873, insee.OrderOfBirth)
assert.Equal(40, insee.ControlKey)
assert.Equal(insee.CountryCode, "432")
assert.Equal(insee.CityCode, "")
}
func TestNewInseeData_ValidFrenchDROM(t *testing.T) {
assert := assert.New(t)
number := "299129742398791"
insee, err := NewInseeData(number)
if err != nil {
t.Error(err)
}
valid, err := insee.IsValid()
if err != nil {
t.Error(err)
}
assert.True(valid)
assert.Equal(number, insee.InseeNumber)
assert.Equal(Female, insee.Gender)
assert.Equal(1999, insee.Year)
assert.Equal(time.Month(12), insee.Month)
assert.Equal("La Réunion", insee.Department)
assert.NotNil(insee.City)
assert.Equal("Trois-Bassins", insee.City)
assert.False(insee.Foreign)
assert.Equal([]string{"FRANCE"}, insee.Countries)
assert.Equal(987, insee.OrderOfBirth)
assert.Equal(91, insee.ControlKey)
assert.Equal(insee.CountryCode, "")
assert.Equal(insee.CityCode, "23")
assert.Equal("Europe", insee.Continent)
}
func TestNewInseeData_ValidFrenchCorsica(t *testing.T) {
assert := assert.New(t)
number := "299122A00498723"
insee, err := NewInseeData(number)
if err != nil {
t.Error(err)
}
valid, err := insee.IsValid()
if err != nil {
t.Error(err)
}
assert.True(valid)
assert.Equal(number, insee.InseeNumber)
assert.Equal("Corse-du-Sud", insee.Department)
assert.NotNil(insee.City)
assert.Equal("Ajaccio", insee.City)
assert.False(insee.Foreign)
assert.Equal([]string{"FRANCE"}, insee.Countries)
assert.Equal(23, insee.ControlKey)
}
var inseeResult *InseeData
func BenchmarkNewInseeData(b *testing.B) {
var in *InseeData
for i := 0; i < b.N; i++ {
in, _ = NewInseeData("299122A00498723")
}
inseeResult = in
}