emacs-elpa-diffs
[Top][All Lists]
Advanced

[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")))



reply via email to

[Prev in Thread] Current Thread [Next in Thread]