[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[nongnu] elpa/dart-mode 1c2cbe5 179/192: Add faceup tests
From: |
ELPA Syncer |
Subject: |
[nongnu] elpa/dart-mode 1c2cbe5 179/192: Add faceup tests |
Date: |
Sun, 29 Aug 2021 11:02:13 -0400 (EDT) |
branch: elpa/dart-mode
commit 1c2cbe521873de41496ed03ef10c79c37a950ed2
Author: Brady Trainor <mail@bradyt.net>
Commit: Brady Trainor <mail@bradyt.net>
Add faceup tests
---
.travis.yml | 1 +
Cask | 1 +
Makefile | 13 +++++---
dart-mode.el | 4 +--
test/faceup/issues/abstract-methods.dart | 3 ++
test/faceup/issues/abstract-methods.dart.faceup | 3 ++
test/faceup/issues/covariant.dart | 3 ++
test/faceup/issues/covariant.dart.faceup | 3 ++
test/faceup/issues/declared-operators.dart | 6 ++++
test/faceup/issues/declared-operators.dart.faceup | 6 ++++
test/faceup/issues/named-constructors.dart | 5 +++
test/faceup/issues/named-constructors.dart.faceup | 5 +++
test/faceup/language-samples/async.dart | 36 ++++++++++++++++++++
test/faceup/language-samples/async.dart.faceup | 36 ++++++++++++++++++++
test/faceup/language-samples/classes.dart | 31 +++++++++++++++++
test/faceup/language-samples/classes.dart.faceup | 31 +++++++++++++++++
test/faceup/language-samples/comments.dart | 7 ++++
test/faceup/language-samples/comments.dart.faceup | 7 ++++
.../language-samples/control-flow-statements.dart | 17 ++++++++++
.../control-flow-statements.dart.faceup | 17 ++++++++++
test/faceup/language-samples/exceptions.dart | 14 ++++++++
.../faceup/language-samples/exceptions.dart.faceup | 14 ++++++++
test/faceup/language-samples/functions.dart | 8 +++++
test/faceup/language-samples/functions.dart.faceup | 8 +++++
test/faceup/language-samples/hello-world.dart | 3 ++
.../language-samples/hello-world.dart.faceup | 3 ++
test/faceup/language-samples/imports.dart | 8 +++++
test/faceup/language-samples/imports.dart.faceup | 8 +++++
test/faceup/language-samples/inheritance.dart | 5 +++
.../language-samples/inheritance.dart.faceup | 5 +++
.../interfaces-and-abstract-classes.dart | 13 ++++++++
.../interfaces-and-abstract-classes.dart.faceup | 13 ++++++++
test/faceup/language-samples/mixins.dart | 10 ++++++
test/faceup/language-samples/mixins.dart.faceup | 10 ++++++
test/faceup/language-samples/variables.dart | 8 +++++
test/faceup/language-samples/variables.dart.faceup | 8 +++++
test/test.el | 39 ++++++++++++++++++++++
37 files changed, 406 insertions(+), 6 deletions(-)
diff --git a/.travis.yml b/.travis.yml
index 971f9c7..44bb8c1 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -11,6 +11,7 @@ env:
- EVM_EMACS=emacs-25.2-travis
- EVM_EMACS=emacs-25.3-travis
- EVM_EMACS=emacs-26.1-travis
+ - EVM_EMACS=emacs-26.2-travis
- EVM_EMACS=emacs-git-snapshot-travis
before_install:
diff --git a/Cask b/Cask
index 953e1b0..927e901 100644
--- a/Cask
+++ b/Cask
@@ -5,4 +5,5 @@
(development
(depends-on "ert-runner")
+ (depends-on "faceup")
(depends-on "package-lint"))
diff --git a/Makefile b/Makefile
index 238c093..4e9a0ac 100644
--- a/Makefile
+++ b/Makefile
@@ -1,4 +1,4 @@
-all: package-lint dart-mode.elc checkdoc
+all: package-lint dart-mode.elc test
.cask:
cask install
@@ -6,11 +6,14 @@ all: package-lint dart-mode.elc checkdoc
package-lint: .cask
cask emacs -batch -l package-lint.el -f package-lint-batch-and-exit
-dart-mode.elc: .cask
- cask emacs -batch -f batch-byte-compile dart-mode.el
+dart-mode.elc:
+ emacs -batch -f batch-byte-compile dart-mode.el
+
+test: .cask dart-mode.elc
+ cask emacs -batch -l dart-mode.elc -l ert -l test/test.el -f
ert-run-tests-batch-and-exit
checkdoc:
- emacs -batch -eval "(checkdoc-file \"dart-mode.el\")"
+ emacs -batch -eval "(when (>= emacs-major-version 25) (checkdoc-file
\"dart-mode.el\"))"
clean: clean-cask clean-elc
@@ -19,3 +22,5 @@ clean-cask:
clean-elc:
rm dart-mode.elc
+
+.PHONY: test
diff --git a/dart-mode.el b/dart-mode.el
index ffb8d0e..dfad928 100644
--- a/dart-mode.el
+++ b/dart-mode.el
@@ -353,13 +353,13 @@ fontify as declared variables. From ECMA-408,
variableDeclaration:
declaredIdentifier (', ' identifier)*
;"
- (ignore limit)
(catch 'result
(let ((depth (car (syntax-ppss))))
(while t
(cond
;; If point is followed by semi-colon, we are done.
- ((or (= (char-after (point)) ?\x3b) ; ?;
+ ((or (> (point) limit)
+ (= (char-after (point)) ?\;)
(< (car (syntax-ppss)) depth))
(throw 'result nil))
;; If point is followed by comma, and we are still at same
diff --git a/test/faceup/issues/abstract-methods.dart
b/test/faceup/issues/abstract-methods.dart
new file mode 100644
index 0000000..083662e
--- /dev/null
+++ b/test/faceup/issues/abstract-methods.dart
@@ -0,0 +1,3 @@
+abstract class Describable {
+ void describe();
+}
diff --git a/test/faceup/issues/abstract-methods.dart.faceup
b/test/faceup/issues/abstract-methods.dart.faceup
new file mode 100644
index 0000000..e92aa9c
--- /dev/null
+++ b/test/faceup/issues/abstract-methods.dart.faceup
@@ -0,0 +1,3 @@
+«b:abstract» «k:class» «t:Describable» {
+ «t:void» «f:describe»();
+}
diff --git a/test/faceup/issues/covariant.dart
b/test/faceup/issues/covariant.dart
new file mode 100644
index 0000000..731e679
--- /dev/null
+++ b/test/faceup/issues/covariant.dart
@@ -0,0 +1,3 @@
+class Cat extends Animal {
+ void chase(covariant Mouse x) { ... }
+}
diff --git a/test/faceup/issues/covariant.dart.faceup
b/test/faceup/issues/covariant.dart.faceup
new file mode 100644
index 0000000..1008b1d
--- /dev/null
+++ b/test/faceup/issues/covariant.dart.faceup
@@ -0,0 +1,3 @@
+«k:class» «t:Cat» «k:extends» «t:Animal» {
+ «t:void» «f:chase»(«k:covariant» «t:Mouse» «v:x») { ... }
+}
diff --git a/test/faceup/issues/declared-operators.dart
b/test/faceup/issues/declared-operators.dart
new file mode 100644
index 0000000..79e44ad
--- /dev/null
+++ b/test/faceup/issues/declared-operators.dart
@@ -0,0 +1,6 @@
+class DateTime implements Comparable<DateTime> {
+ bool operator ==(other) {
+ if (!(other is DateTime)) return false;
+ return (_value == other._value && isUtc == other.isUtc);
+ }
+}
diff --git a/test/faceup/issues/declared-operators.dart.faceup
b/test/faceup/issues/declared-operators.dart.faceup
new file mode 100644
index 0000000..b4cc4b8
--- /dev/null
+++ b/test/faceup/issues/declared-operators.dart.faceup
@@ -0,0 +1,6 @@
+«k:class» «t:DateTime» «b:implements» «t:Comparable»<«t:DateTime»> {
+ «t:bool» «b:operator» «f:==»(«v:other») {
+ «k:if» (!(other «k:is» «t:DateTime»)) «k:return» «c:false»;
+ «k:return» (_value == other._value && isUtc == other.isUtc);
+ }
+}
diff --git a/test/faceup/issues/named-constructors.dart
b/test/faceup/issues/named-constructors.dart
new file mode 100644
index 0000000..7f3df9c
--- /dev/null
+++ b/test/faceup/issues/named-constructors.dart
@@ -0,0 +1,5 @@
+class Spacecraft {
+ String name;
+
+ Spacecraft.unlaunched(String name) : this(name, null);
+}
diff --git a/test/faceup/issues/named-constructors.dart.faceup
b/test/faceup/issues/named-constructors.dart.faceup
new file mode 100644
index 0000000..bd4cbc5
--- /dev/null
+++ b/test/faceup/issues/named-constructors.dart.faceup
@@ -0,0 +1,5 @@
+«k:class» «t:Spacecraft» {
+ «t:String» «v:name»;
+
+ «t:Spacecraft».«f:unlaunched»(«t:String» «v:name») : «k:this»(name,
«c:null»);
+}
diff --git a/test/faceup/language-samples/async.dart
b/test/faceup/language-samples/async.dart
new file mode 100644
index 0000000..72e9a7a
--- /dev/null
+++ b/test/faceup/language-samples/async.dart
@@ -0,0 +1,36 @@
+const oneSecond = Duration(seconds: 1);
+// ...
+Future<void> printWithDelay(String message) async {
+ await Future.delayed(oneSecond);
+ print(message);
+}
+
+Future<void> printWithDelay(String message) {
+ return Future.delayed(oneSecond).then((_) {
+ print(message);
+ });
+}
+
+Future<void> createDescriptions(Iterable<String> objects) async {
+ for (var object in objects) {
+ try {
+ var file = File('$object.txt');
+ if (await file.exists()) {
+ var modified = await file.lastModified();
+ print('File for $object already exists. It was modified on
$modified.');
+ continue;
+ }
+ await file.create();
+ await file.writeAsString('Start describing $object in this file.');
+ } on IOException catch (e) {
+ print('Cannot create description for $object: $e');
+ }
+ }
+}
+
+Stream<String> report(Spacecraft craft, Iterable<String> objects) async* {
+ for (var object in objects) {
+ await Future.delayed(oneSecond);
+ yield '${craft.name} flies by $object';
+ }
+}
diff --git a/test/faceup/language-samples/async.dart.faceup
b/test/faceup/language-samples/async.dart.faceup
new file mode 100644
index 0000000..f650c4e
--- /dev/null
+++ b/test/faceup/language-samples/async.dart.faceup
@@ -0,0 +1,36 @@
+«k:const» «v:oneSecond» = «t:Duration»(seconds: «c:1»);
+«x:// ...
+»«t:Future»<«t:void»> «f:printWithDelay»(«t:String» «v:message») «k:async» {
+ «k:await» «t:Future».delayed(oneSecond);
+ print(message);
+}
+
+«t:Future»<«t:void»> «f:printWithDelay»(«t:String» «v:message») {
+ «k:return» «t:Future».delayed(oneSecond).then((«v:_») {
+ print(message);
+ });
+}
+
+«t:Future»<«t:void»> «f:createDescriptions»(«t:Iterable»<«t:String»>
«v:objects») «k:async» {
+ «k:for» («k:var» «v:object» «k:in» objects) {
+ «k:try» {
+ «k:var» «v:file» = «t:File»(«s:'»«v:$object»«s:.txt'»);
+ «k:if» («k:await» file.exists()) {
+ «k:var» «v:modified» = «k:await» file.lastModified();
+ print(«s:'File for »«v:$object»«s: already exists. It was modified on
»«v:$modified»«s:.'»);
+ «k:continue»;
+ }
+ «k:await» file.create();
+ «k:await» file.writeAsString(«s:'Start describing »«v:$object»«s: in
this file.'»);
+ } on «t:IOException» «k:catch» («v:e») {
+ print(«s:'Cannot create description for »«v:$object»«s:: »«v:$e»«s:'»);
+ }
+ }
+}
+
+«t:Stream»<«t:String»> «f:report»(«t:Spacecraft» «v:craft»,
«t:Iterable»<«t:String»> «v:objects») «k:async*» {
+ «k:for» («k:var» «v:object» «k:in» objects) {
+ «k:await» «t:Future».delayed(oneSecond);
+ «k:yield» «s:'»«v:${craft.name}»«s: flies by »«v:$object»«s:'»;
+ }
+}
diff --git a/test/faceup/language-samples/classes.dart
b/test/faceup/language-samples/classes.dart
new file mode 100644
index 0000000..574deb2
--- /dev/null
+++ b/test/faceup/language-samples/classes.dart
@@ -0,0 +1,31 @@
+class Spacecraft {
+ String name;
+ DateTime launchDate;
+
+ // Constructor, with syntactic sugar for assignment to members.
+ Spacecraft(this.name, this.launchDate) {
+ // Initialization code goes here.
+ }
+
+ // Named constructor that forwards to the default one.
+ Spacecraft.unlaunched(String name) : this(name, null);
+
+ int get launchYear => launchDate?.year; // read-only non-final property
+
+ // Method.
+ void describe() {
+ print('Spacecraft: $name');
+ if (launchDate != null) {
+ int years = DateTime.now().difference(launchDate).inDays ~/ 365;
+ print('Launched: $launchYear ($years years ago)');
+ } else {
+ print('Unlaunched');
+ }
+ }
+}
+
+var voyager = Spacecraft('Voyager I', DateTime(1977, 9, 5));
+voyager.describe();
+
+var voyager3 = Spacecraft.unlaunched('Voyager III');
+voyager3.describe();
diff --git a/test/faceup/language-samples/classes.dart.faceup
b/test/faceup/language-samples/classes.dart.faceup
new file mode 100644
index 0000000..bb8e9a2
--- /dev/null
+++ b/test/faceup/language-samples/classes.dart.faceup
@@ -0,0 +1,31 @@
+«k:class» «t:Spacecraft» {
+ «t:String» «v:name»;
+ «t:DateTime» «v:launchDate»;
+
+ «x:// Constructor, with syntactic sugar for assignment to members.
+» «t:Spacecraft»(«k:this».«v:name», «k:this».«v:launchDate») {
+ «x:// Initialization code goes here.
+» }
+
+ «x:// Named constructor that forwards to the default one.
+» «t:Spacecraft».unlaunched(«t:String» «v:name») : «k:this»(name, «c:null»);
+
+ «t:int» «b:get» «v:launchYear» => launchDate?.year; «x:// read-only
non-final property
+»
+ «x:// Method.
+» «t:void» «f:describe»() {
+ print(«s:'Spacecraft: »«v:$name»«s:'»);
+ «k:if» (launchDate != «c:null») {
+ «t:int» «v:years» = «t:DateTime».now().difference(launchDate).inDays ~/
«c:365»;
+ print(«s:'Launched: »«v:$launchYear»«s: (»«v:$years»«s: years ago)'»);
+ } «k:else» {
+ print(«s:'Unlaunched'»);
+ }
+ }
+}
+
+«k:var» «v:voyager» = «t:Spacecraft»(«s:'Voyager I'», «t:DateTime»(«c:1977»,
«c:9», «c:5»));
+voyager.describe();
+
+«k:var» «v:voyager3» = «t:Spacecraft».unlaunched(«s:'Voyager III'»);
+voyager3.describe();
diff --git a/test/faceup/language-samples/comments.dart
b/test/faceup/language-samples/comments.dart
new file mode 100644
index 0000000..fa9e692
--- /dev/null
+++ b/test/faceup/language-samples/comments.dart
@@ -0,0 +1,7 @@
+// This is a normal, one-line comment.
+
+/// This is a documentation comment, used to document libraries,
+/// classes, and their members. Tools like IDEs and dartdoc treat
+/// doc comments specially.
+
+/* Comments like these are also supported. */
diff --git a/test/faceup/language-samples/comments.dart.faceup
b/test/faceup/language-samples/comments.dart.faceup
new file mode 100644
index 0000000..358c859
--- /dev/null
+++ b/test/faceup/language-samples/comments.dart.faceup
@@ -0,0 +1,7 @@
+«x:// This is a normal, one-line comment.
+»
+«x:/// This is a documentation comment, used to document libraries,
+/// classes, and their members. Tools like IDEs and dartdoc treat
+/// doc comments specially.
+»
+«x:/* Comments like these are also supported. */»
diff --git a/test/faceup/language-samples/control-flow-statements.dart
b/test/faceup/language-samples/control-flow-statements.dart
new file mode 100644
index 0000000..9e98813
--- /dev/null
+++ b/test/faceup/language-samples/control-flow-statements.dart
@@ -0,0 +1,17 @@
+if (year >= 2001) {
+ print('21st century');
+} else if (year >= 1901) {
+ print('20th century');
+}
+
+for (var object in flybyObjects) {
+ print(object);
+}
+
+for (int month = 1; month <= 12; month++) {
+ print(month);
+}
+
+while (year < 2016) {
+ year += 1;
+}
diff --git a/test/faceup/language-samples/control-flow-statements.dart.faceup
b/test/faceup/language-samples/control-flow-statements.dart.faceup
new file mode 100644
index 0000000..48774bd
--- /dev/null
+++ b/test/faceup/language-samples/control-flow-statements.dart.faceup
@@ -0,0 +1,17 @@
+«k:if» (year >= «c:2001») {
+ print(«s:'21st century'»);
+} «k:else» «k:if» (year >= «c:1901») {
+ print(«s:'20th century'»);
+}
+
+«k:for» («k:var» «v:object» «k:in» flybyObjects) {
+ print(object);
+}
+
+«k:for» («t:int» «v:month» = «c:1»; month <= «c:12»; month++) {
+ print(month);
+}
+
+«k:while» (year < «c:2016») {
+ year += «c:1»;
+}
diff --git a/test/faceup/language-samples/exceptions.dart
b/test/faceup/language-samples/exceptions.dart
new file mode 100644
index 0000000..8ff10b0
--- /dev/null
+++ b/test/faceup/language-samples/exceptions.dart
@@ -0,0 +1,14 @@
+if (astronauts == 0) {
+ throw StateError('No astronauts.');
+}
+
+try {
+ for (var object in flybyObjects) {
+ var description = await File('$object.txt').readAsString();
+ print(description);
+ }
+} on IOException catch (e) {
+ print('Could not describe object: $e');
+} finally {
+ flybyObjects.clear();
+}
diff --git a/test/faceup/language-samples/exceptions.dart.faceup
b/test/faceup/language-samples/exceptions.dart.faceup
new file mode 100644
index 0000000..83f3f61
--- /dev/null
+++ b/test/faceup/language-samples/exceptions.dart.faceup
@@ -0,0 +1,14 @@
+«k:if» (astronauts == «c:0») {
+ «k:throw» «t:StateError»(«s:'No astronauts.'»);
+}
+
+«k:try» {
+ «k:for» («k:var» «v:object» «k:in» flybyObjects) {
+ «k:var» «v:description» = «k:await»
«t:File»(«s:'»«v:$object»«s:.txt'»).readAsString();
+ print(description);
+ }
+} on «t:IOException» «k:catch» («v:e») {
+ print(«s:'Could not describe object: »«v:$e»«s:'»);
+} «k:finally» {
+ flybyObjects.clear();
+}
diff --git a/test/faceup/language-samples/functions.dart
b/test/faceup/language-samples/functions.dart
new file mode 100644
index 0000000..74b838e
--- /dev/null
+++ b/test/faceup/language-samples/functions.dart
@@ -0,0 +1,8 @@
+int fibonacci(int n) {
+ if (n == 0 || n == 1) return n;
+ return fibonacci(n - 1) + fibonacci(n - 2);
+}
+
+var result = fibonacci(20);
+
+flybyObjects.where((name) => name.contains('turn')).forEach(print);
diff --git a/test/faceup/language-samples/functions.dart.faceup
b/test/faceup/language-samples/functions.dart.faceup
new file mode 100644
index 0000000..af416a1
--- /dev/null
+++ b/test/faceup/language-samples/functions.dart.faceup
@@ -0,0 +1,8 @@
+«t:int» «f:fibonacci»(«t:int» «v:n») {
+ «k:if» (n == «c:0» || n == «c:1») «k:return» n;
+ «k:return» fibonacci(n - «c:1») + fibonacci(n - «c:2»);
+}
+
+«k:var» «v:result» = fibonacci(«c:20»);
+
+flybyObjects.where((«v:name») => name.contains(«s:'turn'»)).forEach(print);
diff --git a/test/faceup/language-samples/hello-world.dart
b/test/faceup/language-samples/hello-world.dart
new file mode 100644
index 0000000..f3ff17a
--- /dev/null
+++ b/test/faceup/language-samples/hello-world.dart
@@ -0,0 +1,3 @@
+void main() {
+ print('Hello, World!');
+}
diff --git a/test/faceup/language-samples/hello-world.dart.faceup
b/test/faceup/language-samples/hello-world.dart.faceup
new file mode 100644
index 0000000..39b71cf
--- /dev/null
+++ b/test/faceup/language-samples/hello-world.dart.faceup
@@ -0,0 +1,3 @@
+«t:void» «f:main»() {
+ print(«s:'Hello, World!'»);
+}
diff --git a/test/faceup/language-samples/imports.dart
b/test/faceup/language-samples/imports.dart
new file mode 100644
index 0000000..bdbbc78
--- /dev/null
+++ b/test/faceup/language-samples/imports.dart
@@ -0,0 +1,8 @@
+// Importing core libraries
+import 'dart:math';
+
+// Importing libraries from external packages
+import 'package:test/test.dart';
+
+// Importing files
+import 'path/to/my_other_file.dart';
diff --git a/test/faceup/language-samples/imports.dart.faceup
b/test/faceup/language-samples/imports.dart.faceup
new file mode 100644
index 0000000..59b8807
--- /dev/null
+++ b/test/faceup/language-samples/imports.dart.faceup
@@ -0,0 +1,8 @@
+«x:// Importing core libraries
+»«b:import» «s:'dart:math'»;
+
+«x:// Importing libraries from external packages
+»«b:import» «s:'package:test/test.dart'»;
+
+«x:// Importing files
+»«b:import» «s:'path/to/my_other_file.dart'»;
diff --git a/test/faceup/language-samples/inheritance.dart
b/test/faceup/language-samples/inheritance.dart
new file mode 100644
index 0000000..aaee16b
--- /dev/null
+++ b/test/faceup/language-samples/inheritance.dart
@@ -0,0 +1,5 @@
+class Orbiter extends Spacecraft {
+ num altitude;
+ Orbiter(String name, DateTime launchDate, this.altitude)
+ : super(name, launchDate);
+}
diff --git a/test/faceup/language-samples/inheritance.dart.faceup
b/test/faceup/language-samples/inheritance.dart.faceup
new file mode 100644
index 0000000..1441978
--- /dev/null
+++ b/test/faceup/language-samples/inheritance.dart.faceup
@@ -0,0 +1,5 @@
+«k:class» «t:Orbiter» «k:extends» «t:Spacecraft» {
+ «t:num» «v:altitude»;
+ «t:Orbiter»(«t:String» «v:name», «t:DateTime» «v:launchDate»,
«k:this».altitude)
+ : «k:super»(name, launchDate);
+}
diff --git a/test/faceup/language-samples/interfaces-and-abstract-classes.dart
b/test/faceup/language-samples/interfaces-and-abstract-classes.dart
new file mode 100644
index 0000000..0937c75
--- /dev/null
+++ b/test/faceup/language-samples/interfaces-and-abstract-classes.dart
@@ -0,0 +1,13 @@
+class MockSpaceship implements Spacecraft {
+ // ···
+}
+
+abstract class Describable {
+ void describe();
+
+ void describeWithEmphasis() {
+ print('=========');
+ describe();
+ print('=========');
+ }
+}
diff --git
a/test/faceup/language-samples/interfaces-and-abstract-classes.dart.faceup
b/test/faceup/language-samples/interfaces-and-abstract-classes.dart.faceup
new file mode 100644
index 0000000..4d7617c
--- /dev/null
+++ b/test/faceup/language-samples/interfaces-and-abstract-classes.dart.faceup
@@ -0,0 +1,13 @@
+«k:class» «t:MockSpaceship» «b:implements» «t:Spacecraft» {
+ «x:// ···
+»}
+
+«b:abstract» «k:class» «t:Describable» {
+ «t:void» describe();
+
+ «t:void» «f:describeWithEmphasis»() {
+ print(«s:'========='»);
+ describe();
+ print(«s:'========='»);
+ }
+}
diff --git a/test/faceup/language-samples/mixins.dart
b/test/faceup/language-samples/mixins.dart
new file mode 100644
index 0000000..9b78177
--- /dev/null
+++ b/test/faceup/language-samples/mixins.dart
@@ -0,0 +1,10 @@
+class Piloted {
+ int astronauts = 1;
+ void describeCrew() {
+ print('Number of astronauts: $astronauts');
+ }
+}
+
+class PilotedCraft extends Spacecraft with Piloted {
+ // ...
+}
diff --git a/test/faceup/language-samples/mixins.dart.faceup
b/test/faceup/language-samples/mixins.dart.faceup
new file mode 100644
index 0000000..1a5a95c
--- /dev/null
+++ b/test/faceup/language-samples/mixins.dart.faceup
@@ -0,0 +1,10 @@
+«k:class» «t:Piloted» {
+ «t:int» «v:astronauts» = «c:1»;
+ «t:void» «f:describeCrew»() {
+ print(«s:'Number of astronauts: »«v:$astronauts»«s:'»);
+ }
+}
+
+«k:class» «t:PilotedCraft» «k:extends» «t:Spacecraft» «k:with» «t:Piloted» {
+ «m:// »«x:...
+»}
diff --git a/test/faceup/language-samples/variables.dart
b/test/faceup/language-samples/variables.dart
new file mode 100644
index 0000000..1478b35
--- /dev/null
+++ b/test/faceup/language-samples/variables.dart
@@ -0,0 +1,8 @@
+var name = 'Voyager I';
+var year = 1977;
+var antennaDiameter = 3.7;
+var flybyObjects = ['Jupiter', 'Saturn', 'Uranus', 'Neptune'];
+var image = {
+ 'tags': ['saturn'],
+ 'url': '//path/to/saturn.jpg'
+};
diff --git a/test/faceup/language-samples/variables.dart.faceup
b/test/faceup/language-samples/variables.dart.faceup
new file mode 100644
index 0000000..7b8fdb8
--- /dev/null
+++ b/test/faceup/language-samples/variables.dart.faceup
@@ -0,0 +1,8 @@
+«k:var» «v:name» = «s:'Voyager I'»;
+«k:var» «v:year» = «c:1977»;
+«k:var» «v:antennaDiameter» = «c:3.7»;
+«k:var» «v:flybyObjects» = [«s:'Jupiter'», «s:'Saturn'», «s:'Uranus'»,
«s:'Neptune'»];
+«k:var» «v:image» = {
+ «s:'tags'»: [«s:'saturn'»],
+ «s:'url'»: «s:'//path/to/saturn.jpg'»
+};
diff --git a/test/test.el b/test/test.el
new file mode 100644
index 0000000..ae602d8
--- /dev/null
+++ b/test/test.el
@@ -0,0 +1,39 @@
+(require 'faceup)
+
+(defvar dart-font-lock-test-dir (faceup-this-file-directory))
+
+(defun dart-font-lock-test-apps (file)
+ "Test that the dart FILE is fontifies as the .faceup file describes."
+ (let ((dart-mode-hook nil))
+ (faceup-test-font-lock-file 'dart-mode
+ (concat dart-font-lock-test-dir file))))
+(faceup-defexplainer dart-font-lock-test-apps)
+
+(ert-deftest dart-font-lock-language-samples-test ()
+ (should (dart-font-lock-test-apps "faceup/language-samples/async.dart"))
+ (should (dart-font-lock-test-apps "faceup/language-samples/classes.dart"))
+ (should (dart-font-lock-test-apps "faceup/language-samples/comments.dart"))
+ (should (dart-font-lock-test-apps
"faceup/language-samples/control-flow-statements.dart"))
+ (should (dart-font-lock-test-apps "faceup/language-samples/exceptions.dart"))
+ (should (dart-font-lock-test-apps "faceup/language-samples/functions.dart"))
+ (should (dart-font-lock-test-apps
"faceup/language-samples/hello-world.dart"))
+ (should (dart-font-lock-test-apps "faceup/language-samples/imports.dart"))
+ (should (dart-font-lock-test-apps
"faceup/language-samples/inheritance.dart"))
+ (should (dart-font-lock-test-apps
"faceup/language-samples/interfaces-and-abstract-classes.dart"))
+ (should (dart-font-lock-test-apps "faceup/language-samples/variables.dart")))
+
+(ert-deftest dart-font-lock-abstract-method-test ()
+ :expected-result :failed
+ (should (dart-font-lock-test-apps "faceup/issues/abstract-methods.dart")))
+
+(ert-deftest dart-font-lock-covariant-test ()
+ :expected-result :failed
+ (should (dart-font-lock-test-apps "faceup/issues/covariant.dart")))
+
+(ert-deftest dart-font-lock-declared-operators-test ()
+ :expected-result :failed
+ (should (dart-font-lock-test-apps "faceup/issues/declared-operators.dart")))
+
+(ert-deftest dart-font-lock-named-constructors-test ()
+ :expected-result :failed
+ (should (dart-font-lock-test-apps "faceup/issues/named-constructors.dart")))
- [nongnu] elpa/dart-mode f20f895 164/192: Move docs from README to Wiki, (continued)
- [nongnu] elpa/dart-mode f20f895 164/192: Move docs from README to Wiki, ELPA Syncer, 2021/08/29
- [nongnu] elpa/dart-mode 36fe2ce 166/192: Fontify identifiers after multi-nested types, ELPA Syncer, 2021/08/29
- [nongnu] elpa/dart-mode 57767bb 157/192: Makes current indentation logic more usable, ELPA Syncer, 2021/08/29
- [nongnu] elpa/dart-mode 90f1120 162/192: Require subr-x for string-empty-p, ELPA Syncer, 2021/08/29
- [nongnu] elpa/dart-mode 8983e17 186/192: Code in font-lock tests were copied from dart.dev site, ELPA Syncer, 2021/08/29
- [nongnu] elpa/dart-mode 07a9e76 189/192: Add failing font-lock test, ELPA Syncer, 2021/08/29
- [nongnu] elpa/dart-mode 3c089f3 183/192: Fix font lock for abstract method, ELPA Syncer, 2021/08/29
- [nongnu] elpa/dart-mode 40f6741 150/192: Fontifies more keywords, builtins, constants and types, ELPA Syncer, 2021/08/29
- [nongnu] elpa/dart-mode d5776f1 172/192: Fixes fontification of small strings containing only backslashes, ELPA Syncer, 2021/08/29
- [nongnu] elpa/dart-mode 5989dca 180/192: Fontify operator declaration, ELPA Syncer, 2021/08/29
- [nongnu] elpa/dart-mode 1c2cbe5 179/192: Add faceup tests,
ELPA Syncer <=
- [nongnu] elpa/dart-mode 04fcd64 190/192: Treat angle brackets as puncutation syntax instead of symbol syntax, ELPA Syncer, 2021/08/29
- [nongnu] elpa/dart-mode e41f41e 174/192: Fontify untyped parameters in anonymous functions, ELPA Syncer, 2021/08/29
- [nongnu] elpa/dart-mode 43975c9 192/192: Add syntax highlighting for keywords extension, late, required, ELPA Syncer, 2021/08/29
- [nongnu] elpa/dart-mode ed80bc8 002/192: Set a bunch of CC-mode configuration vars., ELPA Syncer, 2021/08/29
- [nongnu] elpa/dart-mode 64eb399 003/192: Fix array literal indentation., ELPA Syncer, 2021/08/29
- [nongnu] elpa/dart-mode 91cc86c 005/192: Make "var" a typeless decl keyword., ELPA Syncer, 2021/08/29
- [nongnu] elpa/dart-mode 8098454 006/192: Initialize the syntax table., ELPA Syncer, 2021/08/29
- [nongnu] elpa/dart-mode 4e56274 013/192: Version 0.2., ELPA Syncer, 2021/08/29
- [nongnu] elpa/dart-mode 7e45699 018/192: Fix the Version header., ELPA Syncer, 2021/08/29
- [nongnu] elpa/dart-mode 2a66d38 020/192: Add more known bugs., ELPA Syncer, 2021/08/29