Browse Source

Promise class >> delayMilliseconds:.

Herby Vojčík 3 years ago
parent
commit
8d955cbd6e

+ 2 - 2
lang/API-CHANGES.txt

@@ -5,8 +5,8 @@
 
 + JSObjectProxy
   + isThenable
-+ TestCase >>
-  + delay:
++ Promise class >>
+  + delayMilliseconds:
 + TIsInGroup >>
   + isThenable
 + TThenable >>

+ 39 - 0
lang/src/Kernel-Promises.js

@@ -53,6 +53,45 @@ return self;
 }; }),
 $globals.Promise.a$cls);
 
+$core.addMethod(
+$core.method({
+selector: "delayMilliseconds:",
+protocol: "instance creation",
+//>>excludeStart("ide", pragmas.excludeIdeData);
+args: ["aNumber"],
+source: "delayMilliseconds: aNumber\x0a\x09^ self new: [ :model | [ model value: nil ] valueWithTimeout: aNumber ]",
+referencedClasses: [],
+//>>excludeEnd("ide");
+pragmas: [],
+messageSends: ["new:", "valueWithTimeout:", "value:"]
+}, function ($methodClass){ return function (aNumber){
+var self=this,$self=this;
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
+return $core.withContext(function($ctx1) {
+//>>excludeEnd("ctx");
+return $self._new_((function(model){
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
+return $core.withContext(function($ctx2) {
+//>>excludeEnd("ctx");
+return $recv((function(){
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
+return $core.withContext(function($ctx3) {
+//>>excludeEnd("ctx");
+return $recv(model)._value_(nil);
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
+}, function($ctx3) {$ctx3.fillBlock({},$ctx2,2)});
+//>>excludeEnd("ctx");
+}))._valueWithTimeout_(aNumber);
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
+}, function($ctx2) {$ctx2.fillBlock({model:model},$ctx1,1)});
+//>>excludeEnd("ctx");
+}));
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
+}, function($ctx1) {$ctx1.fill(self,"delayMilliseconds:",{aNumber:aNumber})});
+//>>excludeEnd("ctx");
+}; }),
+$globals.Promise.a$cls);
+
 $core.addMethod(
 $core.method({
 selector: "forBlock:",

+ 4 - 0
lang/src/Kernel-Promises.st

@@ -17,6 +17,10 @@ any: aCollection
 
 !Promise class methodsFor: 'instance creation'!
 
+delayMilliseconds: aNumber
+	^ self new: [ :model | [ model value: nil ] valueWithTimeout: aNumber ]
+!
+
 forBlock: aBlock
 "Returns a Promise that is resolved with the value of aBlock,
 and rejected if error happens while evaluating aBlock."

+ 36 - 36
lang/src/SUnit-Tests.js

@@ -966,11 +966,11 @@ selector: "fakeError",
 protocol: "helpers",
 //>>excludeStart("ide", pragmas.excludeIdeData);
 args: [],
-source: "fakeError\x0a\x09flag := 'bad'.\x0a\x09self timeout: 30.\x0a\x09flag := self delay: 20.\x0a\x09^ flag then: [ flag := 'ok'. self error: 'Intentional' ]",
-referencedClasses: [],
+source: "fakeError\x0a\x09flag := 'bad'.\x0a\x09self timeout: 30.\x0a\x09flag := Promise delayMilliseconds: 20.\x0a\x09^ flag then: [ flag := 'ok'. self error: 'Intentional' ]",
+referencedClasses: ["Promise"],
 //>>excludeEnd("ide");
 pragmas: [],
-messageSends: ["timeout:", "delay:", "then:", "error:"]
+messageSends: ["timeout:", "delayMilliseconds:", "then:", "error:"]
 }, function ($methodClass){ return function (){
 var self=this,$self=this;
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
@@ -978,7 +978,7 @@ return $core.withContext(function($ctx1) {
 //>>excludeEnd("ctx");
 $self.flag="bad";
 $self._timeout_((30));
-$self.flag=$self._delay_((20));
+$self.flag=$recv($globals.Promise)._delayMilliseconds_((20));
 return $recv($self.flag)._then_((function(){
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 return $core.withContext(function($ctx2) {
@@ -1001,11 +1001,11 @@ selector: "fakeErrorFailingInTearDown",
 protocol: "helpers",
 //>>excludeStart("ide", pragmas.excludeIdeData);
 args: [],
-source: "fakeErrorFailingInTearDown\x0a\x09flag := 'bad'.\x0a\x09self timeout: 30.\x0a\x09flag := self delay: 20.\x0a\x09^ flag then: [ self error: 'Intentional' ]",
-referencedClasses: [],
+source: "fakeErrorFailingInTearDown\x0a\x09flag := 'bad'.\x0a\x09self timeout: 30.\x0a\x09flag := Promise delayMilliseconds: 20.\x0a\x09^ flag then: [ self error: 'Intentional' ]",
+referencedClasses: ["Promise"],
 //>>excludeEnd("ide");
 pragmas: [],
-messageSends: ["timeout:", "delay:", "then:", "error:"]
+messageSends: ["timeout:", "delayMilliseconds:", "then:", "error:"]
 }, function ($methodClass){ return function (){
 var self=this,$self=this;
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
@@ -1013,7 +1013,7 @@ return $core.withContext(function($ctx1) {
 //>>excludeEnd("ctx");
 $self.flag="bad";
 $self._timeout_((30));
-$self.flag=$self._delay_((20));
+$self.flag=$recv($globals.Promise)._delayMilliseconds_((20));
 return $recv($self.flag)._then_((function(){
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 return $core.withContext(function($ctx2) {
@@ -1035,11 +1035,11 @@ selector: "fakeFailure",
 protocol: "helpers",
 //>>excludeStart("ide", pragmas.excludeIdeData);
 args: [],
-source: "fakeFailure\x0a\x09flag := 'bad'.\x0a\x09self timeout: 30.\x0a\x09flag := self delay: 20.\x0a\x09^ flag then: [ flag := 'ok'. self assert: false ]",
-referencedClasses: [],
+source: "fakeFailure\x0a\x09flag := 'bad'.\x0a\x09self timeout: 30.\x0a\x09flag := Promise delayMilliseconds: 20.\x0a\x09^ flag then: [ flag := 'ok'. self assert: false ]",
+referencedClasses: ["Promise"],
 //>>excludeEnd("ide");
 pragmas: [],
-messageSends: ["timeout:", "delay:", "then:", "assert:"]
+messageSends: ["timeout:", "delayMilliseconds:", "then:", "assert:"]
 }, function ($methodClass){ return function (){
 var self=this,$self=this;
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
@@ -1047,7 +1047,7 @@ return $core.withContext(function($ctx1) {
 //>>excludeEnd("ctx");
 $self.flag="bad";
 $self._timeout_((30));
-$self.flag=$self._delay_((20));
+$self.flag=$recv($globals.Promise)._delayMilliseconds_((20));
 return $recv($self.flag)._then_((function(){
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 return $core.withContext(function($ctx2) {
@@ -1070,11 +1070,11 @@ selector: "fakeMultipleTimeoutFailing",
 protocol: "helpers",
 //>>excludeStart("ide", pragmas.excludeIdeData);
 args: [],
-source: "fakeMultipleTimeoutFailing\x0a\x09self timeout: 100.\x0a\x09^ (self delay: 20) then: [ self timeout: 20. self delay: 30 ]",
-referencedClasses: [],
+source: "fakeMultipleTimeoutFailing\x0a\x09self timeout: 100.\x0a\x09^ (Promise delayMilliseconds: 20) then: [ self timeout: 20. Promise delayMilliseconds: 30 ]",
+referencedClasses: ["Promise"],
 //>>excludeEnd("ide");
 pragmas: [],
-messageSends: ["timeout:", "then:", "delay:"]
+messageSends: ["timeout:", "then:", "delayMilliseconds:"]
 }, function ($methodClass){ return function (){
 var self=this,$self=this;
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
@@ -1085,16 +1085,16 @@ return $core.withContext(function($ctx1) {
 ,$ctx1.sendIdx["timeout:"]=1
 //>>excludeEnd("ctx");
 ][0];
-return $recv([$self._delay_((20))
+return $recv([$recv($globals.Promise)._delayMilliseconds_((20))
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
-,$ctx1.sendIdx["delay:"]=1
+,$ctx1.sendIdx["delayMilliseconds:"]=1
 //>>excludeEnd("ctx");
 ][0])._then_((function(){
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 return $core.withContext(function($ctx2) {
 //>>excludeEnd("ctx");
 $self._timeout_((20));
-return $self._delay_((30));
+return $recv($globals.Promise)._delayMilliseconds_((30));
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
 //>>excludeEnd("ctx");
@@ -1111,11 +1111,11 @@ selector: "fakeMultipleTimeoutPassing",
 protocol: "helpers",
 //>>excludeStart("ide", pragmas.excludeIdeData);
 args: [],
-source: "fakeMultipleTimeoutPassing\x0a\x09self timeout: 20.\x0a\x09^ (self delay: 10) then: [ self timeout: 40. self delay: 20 ]",
-referencedClasses: [],
+source: "fakeMultipleTimeoutPassing\x0a\x09self timeout: 20.\x0a\x09^ (Promise delayMilliseconds: 10) then: [ self timeout: 40. Promise delayMilliseconds: 20 ]",
+referencedClasses: ["Promise"],
 //>>excludeEnd("ide");
 pragmas: [],
-messageSends: ["timeout:", "then:", "delay:"]
+messageSends: ["timeout:", "then:", "delayMilliseconds:"]
 }, function ($methodClass){ return function (){
 var self=this,$self=this;
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
@@ -1126,16 +1126,16 @@ return $core.withContext(function($ctx1) {
 ,$ctx1.sendIdx["timeout:"]=1
 //>>excludeEnd("ctx");
 ][0];
-return $recv([$self._delay_((10))
+return $recv([$recv($globals.Promise)._delayMilliseconds_((10))
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
-,$ctx1.sendIdx["delay:"]=1
+,$ctx1.sendIdx["delayMilliseconds:"]=1
 //>>excludeEnd("ctx");
 ][0])._then_((function(){
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 return $core.withContext(function($ctx2) {
 //>>excludeEnd("ctx");
 $self._timeout_((40));
-return $self._delay_((20));
+return $recv($globals.Promise)._delayMilliseconds_((20));
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
 //>>excludeEnd("ctx");
@@ -1152,17 +1152,17 @@ selector: "fakePromiseWithoutTimeout",
 protocol: "helpers",
 //>>excludeStart("ide", pragmas.excludeIdeData);
 args: [],
-source: "fakePromiseWithoutTimeout\x0a\x09^ self delay: 10",
-referencedClasses: [],
+source: "fakePromiseWithoutTimeout\x0a\x09^ Promise delayMilliseconds: 10",
+referencedClasses: ["Promise"],
 //>>excludeEnd("ide");
 pragmas: [],
-messageSends: ["delay:"]
+messageSends: ["delayMilliseconds:"]
 }, function ($methodClass){ return function (){
 var self=this,$self=this;
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 return $core.withContext(function($ctx1) {
 //>>excludeEnd("ctx");
-return $self._delay_((10));
+return $recv($globals.Promise)._delayMilliseconds_((10));
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 }, function($ctx1) {$ctx1.fill(self,"fakePromiseWithoutTimeout",{})});
 //>>excludeEnd("ctx");
@@ -1175,18 +1175,18 @@ selector: "fakeTimeout",
 protocol: "helpers",
 //>>excludeStart("ide", pragmas.excludeIdeData);
 args: [],
-source: "fakeTimeout\x0a\x09self timeout: 10.\x0a\x09^ self delay: 20",
-referencedClasses: [],
+source: "fakeTimeout\x0a\x09self timeout: 10.\x0a\x09^ Promise delayMilliseconds: 20",
+referencedClasses: ["Promise"],
 //>>excludeEnd("ide");
 pragmas: [],
-messageSends: ["timeout:", "delay:"]
+messageSends: ["timeout:", "delayMilliseconds:"]
 }, function ($methodClass){ return function (){
 var self=this,$self=this;
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 return $core.withContext(function($ctx1) {
 //>>excludeEnd("ctx");
 $self._timeout_((10));
-return $self._delay_((20));
+return $recv($globals.Promise)._delayMilliseconds_((20));
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 }, function($ctx1) {$ctx1.fill(self,"fakeTimeout",{})});
 //>>excludeEnd("ctx");
@@ -1327,11 +1327,11 @@ selector: "testPass",
 protocol: "tests",
 //>>excludeStart("ide", pragmas.excludeIdeData);
 args: [],
-source: "testPass\x0a\x09flag := 'bad'.\x0a\x09self timeout: 10.\x0a\x09flag := self delay: 5.\x0a\x09^ flag then: [ self assert: true. flag := 'ok' ]",
-referencedClasses: [],
+source: "testPass\x0a\x09flag := 'bad'.\x0a\x09self timeout: 10.\x0a\x09flag := Promise delayMilliseconds: 5.\x0a\x09^ flag then: [ self assert: true. flag := 'ok' ]",
+referencedClasses: ["Promise"],
 //>>excludeEnd("ide");
 pragmas: [],
-messageSends: ["timeout:", "delay:", "then:", "assert:"]
+messageSends: ["timeout:", "delayMilliseconds:", "then:", "assert:"]
 }, function ($methodClass){ return function (){
 var self=this,$self=this;
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
@@ -1339,7 +1339,7 @@ return $core.withContext(function($ctx1) {
 //>>excludeEnd("ctx");
 $self.flag="bad";
 $self._timeout_((10));
-$self.flag=$self._delay_((5));
+$self.flag=$recv($globals.Promise)._delayMilliseconds_((5));
 return $recv($self.flag)._then_((function(){
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 return $core.withContext(function($ctx2) {

+ 8 - 8
lang/src/SUnit-Tests.st

@@ -193,41 +193,41 @@ TestCase subclass: #SUnitPromiseTest
 fakeError
 	flag := 'bad'.
 	self timeout: 30.
-	flag := self delay: 20.
+	flag := Promise delayMilliseconds: 20.
 	^ flag then: [ flag := 'ok'. self error: 'Intentional' ]
 !
 
 fakeErrorFailingInTearDown
 	flag := 'bad'.
 	self timeout: 30.
-	flag := self delay: 20.
+	flag := Promise delayMilliseconds: 20.
 	^ flag then: [ self error: 'Intentional' ]
 !
 
 fakeFailure
 	flag := 'bad'.
 	self timeout: 30.
-	flag := self delay: 20.
+	flag := Promise delayMilliseconds: 20.
 	^ flag then: [ flag := 'ok'. self assert: false ]
 !
 
 fakeMultipleTimeoutFailing
 	self timeout: 100.
-	^ (self delay: 20) then: [ self timeout: 20. self delay: 30 ]
+	^ (Promise delayMilliseconds: 20) then: [ self timeout: 20. Promise delayMilliseconds: 30 ]
 !
 
 fakeMultipleTimeoutPassing
 	self timeout: 20.
-	^ (self delay: 10) then: [ self timeout: 40. self delay: 20 ]
+	^ (Promise delayMilliseconds: 10) then: [ self timeout: 40. Promise delayMilliseconds: 20 ]
 !
 
 fakePromiseWithoutTimeout
-	^ self delay: 10
+	^ Promise delayMilliseconds: 10
 !
 
 fakeTimeout
 	self timeout: 10.
-	^ self delay: 20
+	^ Promise delayMilliseconds: 20
 !
 
 fakeTimeoutSendOnly
@@ -264,7 +264,7 @@ testIsAsyncReturnsCorrectValues
 testPass
 	flag := 'bad'.
 	self timeout: 10.
-	flag := self delay: 5.
+	flag := Promise delayMilliseconds: 5.
 	^ flag then: [ self assert: true. flag := 'ok' ]
 !
 

+ 0 - 39
lang/src/SUnit.js

@@ -426,45 +426,6 @@ return $self._runCase();
 }; }),
 $globals.TestCase);
 
-$core.addMethod(
-$core.method({
-selector: "delay:",
-protocol: "async",
-//>>excludeStart("ide", pragmas.excludeIdeData);
-args: ["millis"],
-source: "delay: millis\x0a\x09^ Promise new: [ :model | [ model value: nil ] valueWithTimeout: millis ]",
-referencedClasses: ["Promise"],
-//>>excludeEnd("ide");
-pragmas: [],
-messageSends: ["new:", "valueWithTimeout:", "value:"]
-}, function ($methodClass){ return function (millis){
-var self=this,$self=this;
-//>>excludeStart("ctx", pragmas.excludeDebugContexts);
-return $core.withContext(function($ctx1) {
-//>>excludeEnd("ctx");
-return $recv($globals.Promise)._new_((function(model){
-//>>excludeStart("ctx", pragmas.excludeDebugContexts);
-return $core.withContext(function($ctx2) {
-//>>excludeEnd("ctx");
-return $recv((function(){
-//>>excludeStart("ctx", pragmas.excludeDebugContexts);
-return $core.withContext(function($ctx3) {
-//>>excludeEnd("ctx");
-return $recv(model)._value_(nil);
-//>>excludeStart("ctx", pragmas.excludeDebugContexts);
-}, function($ctx3) {$ctx3.fillBlock({},$ctx2,2)});
-//>>excludeEnd("ctx");
-}))._valueWithTimeout_(millis);
-//>>excludeStart("ctx", pragmas.excludeDebugContexts);
-}, function($ctx2) {$ctx2.fillBlock({model:model},$ctx1,1)});
-//>>excludeEnd("ctx");
-}));
-//>>excludeStart("ctx", pragmas.excludeDebugContexts);
-}, function($ctx1) {$ctx1.fill(self,"delay:",{millis:millis})});
-//>>excludeEnd("ctx");
-}; }),
-$globals.TestCase);
-
 $core.addMethod(
 $core.method({
 selector: "deny:",

+ 0 - 4
lang/src/SUnit.st

@@ -117,10 +117,6 @@ async: aBlock
 	^ [ self isAsync ifTrue: [ c execute: aBlock ] ]
 !
 
-delay: millis
-	^ Promise new: [ :model | [ model value: nil ] valueWithTimeout: millis ]
-!
-
 finished
 	self errorIfNotAsync: '#finished'.
 	asyncTimeout ifNotNil: [ asyncTimeout clearTimeout ].