diff --git a/ConsoleApp1/ConsoleApp1/ConsoleApp1.csproj b/ConsoleApp1/ConsoleApp1/ConsoleApp1.csproj
index 6d463eb..a61c6e2 100644
--- a/ConsoleApp1/ConsoleApp1/ConsoleApp1.csproj
+++ b/ConsoleApp1/ConsoleApp1/ConsoleApp1.csproj
@@ -33,6 +33,9 @@
4
+
+ ..\..\REG_MARK_LIB\REG_MARK_LIB\bin\Debug\REG_MARK_LIB.dll
+
diff --git a/ConsoleApp1/ConsoleApp1/Program.cs b/ConsoleApp1/ConsoleApp1/Program.cs
index 1dce955..ff3382b 100644
--- a/ConsoleApp1/ConsoleApp1/Program.cs
+++ b/ConsoleApp1/ConsoleApp1/Program.cs
@@ -4,6 +4,7 @@ using System.Linq;
using System.Text;
using System.Threading.Tasks;
using VIN_LIB;
+using REG_MARK_LIB;
namespace ConsoleApp1
{
@@ -42,25 +43,36 @@ namespace ConsoleApp1
"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"
+ };
/*
- string vin = "Z9111070060057018";
- string Euvin = "XW8AG4NH7KK108004";
- if (VIN_LIB.VIN.CheckVIN(Euvin))
- Console.WriteLine("Вин годен");
- else
- Console.WriteLine("Вин не годен");
-
- Console.WriteLine(VIN_LIB.VIN.GetVINCountry(vin));
-
- Console.WriteLine(VIN_LIB.VIN.GetTransportYear(vin));
-
- var a = VIN_LIB.VIN.GetVinCountries();
- int i = 0;
- foreach ( var c in a)
- {
- i++;
- Console.WriteLine($"Ключ: {c.Key} Страна: {c.Value} Строка: {i}");
- }*/
int i = 0;
int j = 0;
foreach (string v in testVins)
@@ -76,7 +88,41 @@ namespace ConsoleApp1
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();
}
}
}
diff --git a/REG_MARK_LIB/REG_MARK_LIB/REG_MARK.cs b/REG_MARK_LIB/REG_MARK_LIB/REG_MARK.cs
index 42ddb5b..674172c 100644
--- a/REG_MARK_LIB/REG_MARK_LIB/REG_MARK.cs
+++ b/REG_MARK_LIB/REG_MARK_LIB/REG_MARK.cs
@@ -23,7 +23,7 @@ namespace REG_MARK_LIB
"174", "774", "177", "197", "199", "777", "797", "799", "178", "198", "778", "180", "181", "184", "185", "186", "196"
};
private static readonly char[] letters = { 'A', 'B', 'E', 'K', 'M', 'H', 'O', 'P', 'C', 'T', 'Y', 'X' };
- private static string pattern = @"^[ABEKMHOPCTYX]\d{3}[ABEKMHOPCTYX]{2}\d{2,3}$";
+ private static string pattern = @"^[ABEKMHOPCTYXАВЕКМНОРСТУХ]\d{3}[ABEKMHOPCTYXАВЕКМНОРСТУХ]{2}\d{2,3}$";
public static bool CheckMark(string mark)
{
if (string.IsNullOrEmpty(mark))