From 3e7b9ffe3616d0dc3d635fe0e4e80d570cd0f6b0 Mon Sep 17 00:00:00 2001 From: Ming Ming Date: Mon, 21 Jun 2021 17:04:09 +0800 Subject: [PATCH] Check if number is in specific range --- lib/num_extension.dart | 11 +++++++ test/num_extension_test.dart | 61 ++++++++++++++++++++++++++++++++++++ 2 files changed, 72 insertions(+) create mode 100644 lib/num_extension.dart create mode 100644 test/num_extension_test.dart diff --git a/lib/num_extension.dart b/lib/num_extension.dart new file mode 100644 index 00000000..cb0cbc54 --- /dev/null +++ b/lib/num_extension.dart @@ -0,0 +1,11 @@ +extension NumExtension on num { + bool inRange( + num beg, + num end, { + bool isBegInclusive = true, + bool isEndInclusive = true, + }) { + return (this > beg || (isBegInclusive && this == beg)) && + (this < end || (isEndInclusive && this == end)); + } +} diff --git a/test/num_extension_test.dart b/test/num_extension_test.dart new file mode 100644 index 00000000..59b4e8cb --- /dev/null +++ b/test/num_extension_test.dart @@ -0,0 +1,61 @@ +import 'package:nc_photos/num_extension.dart'; +import 'package:test/test.dart'; + +void main() { + group("NumExtension", () { + group("inRange", () { + test("[x, y)", () { + expect(10.inRange(0, 20, isBegInclusive: true, isEndInclusive: false), + true); + expect(0.inRange(0, 20, isBegInclusive: true, isEndInclusive: false), + true); + expect((-1).inRange(0, 20, isBegInclusive: true, isEndInclusive: false), + false); + expect(20.inRange(0, 20, isBegInclusive: true, isEndInclusive: false), + false); + expect(21.inRange(0, 20, isBegInclusive: true, isEndInclusive: false), + false); + }); + + test("[x, y]", () { + expect(10.inRange(0, 20, isBegInclusive: true, isEndInclusive: true), + true); + expect( + 0.inRange(0, 20, isBegInclusive: true, isEndInclusive: true), true); + expect((-1).inRange(0, 20, isBegInclusive: true, isEndInclusive: true), + false); + expect(20.inRange(0, 20, isBegInclusive: true, isEndInclusive: true), + true); + expect(21.inRange(0, 20, isBegInclusive: true, isEndInclusive: true), + false); + }); + + test("(x, y)", () { + expect(10.inRange(0, 20, isBegInclusive: false, isEndInclusive: false), + true); + expect(0.inRange(0, 20, isBegInclusive: false, isEndInclusive: false), + false); + expect( + (-1).inRange(0, 20, isBegInclusive: false, isEndInclusive: false), + false); + expect(20.inRange(0, 20, isBegInclusive: false, isEndInclusive: false), + false); + expect(21.inRange(0, 20, isBegInclusive: false, isEndInclusive: false), + false); + }); + + test("(x, y]", () { + expect(10.inRange(0, 20, isBegInclusive: false, isEndInclusive: true), + true); + expect(0.inRange(0, 20, isBegInclusive: false, isEndInclusive: true), + false); + expect((-1).inRange(0, 20, isBegInclusive: false, isEndInclusive: true), + false); + expect(20.inRange(0, 20, isBegInclusive: false, isEndInclusive: true), + true); + expect(21.inRange(0, 20, isBegInclusive: false, isEndInclusive: true), + false); + }); + }); + }); +}