129 lines
6.8 KiB
C#
129 lines
6.8 KiB
C#
using System;
|
||
using System.Collections.Generic;
|
||
using System.Linq;
|
||
using System.Text;
|
||
using System.Threading.Tasks;
|
||
using VIN_LIB;
|
||
using REG_MARK_LIB;
|
||
|
||
namespace ConsoleApp1
|
||
{
|
||
internal class Program
|
||
{
|
||
static void Main(string[] args)
|
||
{
|
||
string[] testVins = new string[]
|
||
{
|
||
// РОССИЯ (XTA - АвтоВАЗ, X7L - Renault)
|
||
"XTA210700L1234567", "XTA211400M1234567", "X7LHSR450J1234567", "XTA11183091234567", "XTA210900V1234567",
|
||
|
||
// ГЕРМАНИЯ (WBA - BMW, WVG - VW, WDC - Mercedes)
|
||
"WBA316000K1234567", "WVWZZZ1JZ1W123456", "WDC1690311J123456", "WBA530D00L1234567", "WVGZZZ5NZCW123456",
|
||
|
||
// США (1FA - Ford, 1GC - Chevrolet)
|
||
"1FA6P8CF0E1234567", "1G6AF57V041234567", "1FMEU34E071234567", "1GCGK23G0B1234567", "1FM5K8GT0H1234567",
|
||
|
||
// ЯПОНИЯ (JTD - Toyota, JHM - Honda)
|
||
"JTD12345678123456", "JHMRE485081234567", "JTDKB22U001234567", "JHMCV1650C1234567", "JTDGX31P0E1234567",
|
||
|
||
// ЮЖНАЯ КОРЕЯ (KNA - Kia, KMH - Hyundai)
|
||
"KNAJP241261234567", "KMHCT41M0A1234567", "KNAKU4120D1234567", "KMHSH51J0B1234567", "KNAJX5240L1234567",
|
||
|
||
// МАЛЫЕ ПРОИЗВОДИТЕЛИ (3-й символ '9')
|
||
// Здесь страна определяется по 12-14 символам (в примерах это X39 - Россия)
|
||
"X3912345678X39456", "W0912345678W09123", "Y9912345678Y99123", "Z9912345678Z99123", "99912345678999123",
|
||
|
||
// ФРАНЦИЯ И ИТАЛИЯ (VF3 - Peugeot, ZFA - Fiat)
|
||
"VF3CC8HZB81234567", "ZFA18200001234567", "VF7LC5FW091234567", "ZAR93900001234567", "VF32CKFVC21234567",
|
||
|
||
// РАЗНЫЕ РЕГИОНЫ (Китай, Великобритания, Швеция)
|
||
"LSV12345678123456", "SAL12345678123456", "YS312345678123456", "LNV12345678123456", "SAB12345678123456",
|
||
|
||
// ДОПОЛНИТЕЛЬНЫЕ (Казахстан, Узбекистан, Чехия)
|
||
"KS112345678123456", "XWB12345678123456", "TMB12345678123456", "KZC12345678123456", "XW812345678123456",
|
||
"3HG12345678123456", "8AW12345678123456", "Z1B12345678123456", "Z5S12345678123456", "VF112345678123456"
|
||
};
|
||
|
||
string[] testMarks = {
|
||
// 1. Последовательная серия (проверка инкремента цифр)
|
||
"A001AA77", "A002AA77", "A003AA77", "A010AA77", "A099AA77", "A100AA77", "A500AA77", "A998AA77", "A999AA77",
|
||
|
||
// 2. Граничные переходы букв (A999AA -> B001AA)
|
||
"B999AA77", "X999AA77", "A999BA77", "A999XA77", "A999AX77", "X999XX77",
|
||
|
||
// 3. Разные регионы (2 и 3 знака)
|
||
"E555KK01", "M100HH02", "B777BB16", "T001TT99", "A123AA102", "X888XX177", "K001MK799", "C500CC190",
|
||
|
||
// 4. Группа случайных номеров для массовой проверки
|
||
"K123AB77", "M456BC77", "H789CE77", "P012EK77", "C345KH77", "T678HM77", "Y901MO77", "O234OP77",
|
||
"A567PC77", "B890CT77", "E111TY77", "K222YX77", "M333XA77", "H444XB77", "P555XE77", "C666XK77",
|
||
"T777XM77", "Y888XH77", "O999XO77", "A001XP77", "B010XC77", "E100XT77", "K200XY77", "M300XX77",
|
||
|
||
// 5. Номера с разными буквами (все 12 разрешенных)
|
||
"A111AA11", "B222BB22", "E333EE33", "K444KK44", "M555MM55", "H666HH66", "O777OO77", "P888PP88",
|
||
"C999CC99", "T100TT01", "Y200YY02", "X300XX03",
|
||
|
||
// 6. Еще немного из разных регионов (от 04 до 197)
|
||
"A001AA04", "B002BB05", "E003EE06", "K004KK07", "M005MM08", "H006HH09", "O007OO10", "P008PP11",
|
||
"C009CC12", "T010TT13", "Y011YY14", "X012XX15", "A013AA16", "B014BB17", "E015EE18", "K016KK19",
|
||
"M017MM21", "H018HH22", "O019OO23", "P020PP24", "C021CC25", "T022TT26", "Y023YY27", "X024XX28",
|
||
"A025AA29", "B026BB30", "E027EE31", "K028KK32", "M029MM33", "H030HH34", "O031OO35", "P032PP36",
|
||
"C033CC37", "T034TT38", "Y035YY39", "X036XX40", "A037AA41", "B038BB42", "E039EE43", "K040KK44",
|
||
"M041MM45", "H042HH46", "O043OO47", "P044PP48", "C045CC49", "T046TT50", "Y047YY51", "X048XX52",
|
||
"A100AA177", "B200BB197", "E300EE199", "K400KK777"
|
||
};
|
||
/*
|
||
int i = 0;
|
||
int j = 0;
|
||
foreach (string v in testVins)
|
||
{
|
||
if (VIN_LIB.VIN.CheckVIN(v))
|
||
i++;
|
||
else
|
||
j++;
|
||
Console.WriteLine($"Страна: {VIN_LIB.VIN.GetVINCountry(v)}");
|
||
Console.WriteLine($"Вин номер: {(VIN_LIB.VIN.CheckVIN(v) ? "Верный" : "Не верный")}");
|
||
Console.WriteLine($"Год: {VIN_LIB.VIN.GetTransportYear(v)}");
|
||
}
|
||
Console.WriteLine($"Успешно: {i}");
|
||
Console.WriteLine($"Не успешно: {j}");
|
||
Console.ReadLine();
|
||
*/
|
||
|
||
int i = 0;
|
||
int j = 0;
|
||
foreach (string v in testMarks)
|
||
{
|
||
bool isValid = REG_MARK_LIB.REG_MARK.CheckMark(v);
|
||
|
||
if (isValid)
|
||
{
|
||
i++;
|
||
// Генерируем границу: берем текущую серию (буквы) и ставим 999
|
||
// Пример: если v = "A123BC77", то rangeEnd будет "A999BC77"
|
||
string rangeEnd = $"{v[0]}999{v.Substring(4)}";
|
||
|
||
string nextMark = REG_MARK_LIB.REG_MARK.GetNextMarkAfter(v);
|
||
// В качестве rangeStart для метода логично передать сам v или следующий за ним
|
||
string nextInRange = REG_MARK_LIB.REG_MARK.GetNextMarkAfterInRange(v, v, rangeEnd);
|
||
|
||
Console.WriteLine($"Номер ТС: Верный");
|
||
Console.WriteLine($"Текущая марка: {v} \t Следующая марка: {nextMark}");
|
||
Console.WriteLine($"Интервал до {rangeEnd}: {nextInRange}");
|
||
}
|
||
else
|
||
{
|
||
j++;
|
||
Console.WriteLine($"Номер ТС: Не верный ({v})");
|
||
}
|
||
|
||
Console.WriteLine("--------------------------------------------------");
|
||
}
|
||
|
||
Console.WriteLine($"Успешно: {i}");
|
||
Console.WriteLine($"Не успешно: {j}");
|
||
Console.ReadLine();
|
||
}
|
||
}
|
||
}
|