#993. Added tests for Abi class
diff --git a/LibTest/ffi/Abi/Abi.current_A01_t01.dart b/LibTest/ffi/Abi/Abi.current_A01_t01.dart
new file mode 100644
index 0000000..4dad1f5
--- /dev/null
+++ b/LibTest/ffi/Abi/Abi.current_A01_t01.dart
@@ -0,0 +1,18 @@
+// Copyright (c) 2022, the Dart project authors. Please see the AUTHORS file
+// for details. All rights reserved. Use of this source code is governed by a
+// BSD-style license that can be found in the LICENSE file.
+
+/// @assertion Abi.current()
+/// The ABI the Dart VM is currently running on.
+///
+/// @description Checks that this method returns the ABI the Dart VM is
+/// currently running on
+/// @author sgrekhov@unipro.ru
+
+import "dart:ffi";
+import "../../../Utils/expect.dart";
+
+main() {
+ final abi = Abi.current();
+ Expect.isTrue(Abi.values.contains(abi));
+}
\ No newline at end of file
diff --git a/LibTest/ffi/Abi/Abi.current_A01_t02.dart b/LibTest/ffi/Abi/Abi.current_A01_t02.dart
new file mode 100644
index 0000000..3bd4a5c
--- /dev/null
+++ b/LibTest/ffi/Abi/Abi.current_A01_t02.dart
@@ -0,0 +1,55 @@
+// Copyright (c) 2022, the Dart project authors. Please see the AUTHORS file
+// for details. All rights reserved. Use of this source code is governed by a
+// BSD-style license that can be found in the LICENSE file.
+
+/// @assertion Abi.current()
+/// The ABI the Dart VM is currently running on.
+///
+/// @description Checks that this method returns the ABI the Dart VM is
+/// currently running on
+/// @author sgrekhov@unipro.ru
+
+import "dart:ffi";
+import 'dart:io';
+import "../../../Utils/expect.dart";
+
+main() {
+ final abi = Abi.current();
+ Expect.isTrue(Abi.values.contains(abi));
+ if (Platform.isAndroid) {
+ Expect.isTrue(
+ abi == Abi.androidArm ||
+ abi == Abi.androidArm64 ||
+ abi == Abi.androidIA32 ||
+ abi == Abi.androidX64,
+ abi.toString());
+ }
+ if (Platform.isFuchsia) {
+ Expect.isTrue(
+ abi == Abi.fuchsiaArm64 || abi == Abi.fuchsiaX64, abi.toString());
+ }
+ if (Platform.isIOS) {
+ Expect.isTrue(abi == Abi.iosArm || abi == Abi.iosArm64 || abi == Abi.iosX64,
+ abi.toString());
+ }
+ if (Platform.isLinux) {
+ Expect.isTrue(
+ abi == Abi.linuxArm ||
+ abi == Abi.linuxArm64 ||
+ abi == Abi.linuxX64 ||
+ abi == Abi.linuxIA32 ||
+ abi == Abi.linuxRiscv32 ||
+ abi == Abi.linuxRiscv64,
+ abi.toString());
+ }
+ if (Platform.isMacOS) {
+ Expect.isTrue(abi == Abi.macosX64 || abi == Abi.macosArm64, abi.toString());
+ }
+ if (Platform.isWindows) {
+ Expect.isTrue(
+ abi == Abi.windowsArm64 ||
+ abi == Abi.windowsIA32 ||
+ abi == Abi.windowsX64,
+ abi.toString());
+ }
+}
diff --git a/LibTest/ffi/Abi/Abi.toString_A01_t01.dart b/LibTest/ffi/Abi/Abi.toString_A01_t01.dart
new file mode 100644
index 0000000..5ae23e2
--- /dev/null
+++ b/LibTest/ffi/Abi/Abi.toString_A01_t01.dart
@@ -0,0 +1,27 @@
+// Copyright (c) 2022, the Dart project authors. Please see the AUTHORS file
+// for details. All rights reserved. Use of this source code is governed by a
+// BSD-style license that can be found in the LICENSE file.
+
+/// @assertion @override
+/// String toString()
+/// override
+/// A string representation of this ABI.
+///
+// The string is equal to the 'on' part from Platform.version and dart --version
+///
+/// @description Checks that this method returns a string which is equal to the
+/// 'on' part from Platform.version
+/// @author sgrekhov@unipro.ru
+
+import "dart:ffi";
+import 'dart:io';
+import "../../../Utils/expect.dart";
+
+main() {
+ final abi = Abi.current();
+ String expected = Platform.version
+ .substring(Platform.version.indexOf(" on ") + 4)
+ .trim()
+ .replaceAll("\"", "");
+ Expect.equals(expected, abi.toString());
+}
diff --git a/LibTest/ffi/Abi/Abi.values_A01_t01.dart b/LibTest/ffi/Abi/Abi.values_A01_t01.dart
new file mode 100644
index 0000000..b556c09
--- /dev/null
+++ b/LibTest/ffi/Abi/Abi.values_A01_t01.dart
@@ -0,0 +1,25 @@
+// Copyright (c) 2022, the Dart project authors. Please see the AUTHORS file
+// for details. All rights reserved. Use of this source code is governed by a
+// BSD-style license that can be found in the LICENSE file.
+
+/// @assertion values constant Null safety
+/// List<Abi> const values
+/// The ABIs that the DartVM can run on.
+///
+/// Does not contain a macosIA32. We have stopped supporting 32-bit MacOS.
+///
+/// Includes windowsArm64, even though it is currently not supported. Support
+/// has been requested for Flutter.
+/// https://github.com/flutter/flutter/issues/53120
+///
+/// @description Checks that this list contains `windowsArm64` and the current
+/// ABI
+/// @author sgrekhov@unipro.ru
+
+import "dart:ffi";
+import "../../../Utils/expect.dart";
+
+main() {
+ Expect.isTrue(Abi.values.contains(Abi.current()));
+ Expect.isTrue(Abi.values.contains(Abi.windowsArm64));
+}
\ No newline at end of file