Mike Gerwitz
aeff796332
[ #25 ] [ #25 ] Added member builder tests for private and protected members
2011-10-21 16:04:24 -04:00
Mike Gerwitz
ea972bdffc
[ #25 ] Added ability to manually increment assertion count for custom assertions
2011-10-21 12:10:53 -04:00
Mike Gerwitz
9ea60a18b0
[ #25 ] Added assertion count to testcase output
2011-10-21 12:10:53 -04:00
Mike Gerwitz
f7700f93e5
[ #25 ] Refactored MemberBuilder/VisibilityTest basic tests into reusable functions for upcoming tests in other access levels
2011-10-21 12:10:49 -04:00
Mike Gerwitz
bb9eb16fd3
[ #25 ] Began adding MemberBuilder/VisibilityTest to test MemberBuilder directly
...
As mentioned in a prior commit blog-like entry, many of the tests evolved into more of an integration or system-level type of test. Let's get away from that.
2011-10-21 12:09:00 -04:00
Mike Gerwitz
474d8f307d
[ #25 ] Added caseSetUp() for test cases
2011-10-21 10:57:34 -04:00
Mike Gerwitz
c1207eb3d5
Moved MemberBuilder-MethodTest into MemberBuilder subdir
...
- Altered combine script to support subdirs (note that the dir names aren't included in the combined file)
2011-10-20 23:40:30 -04:00
Mike Gerwitz
8c0058698a
Removed accidental commit of console.log() in test-combine.js
2011-10-14 22:36:10 -04:00
Mike Gerwitz
024f3b778c
Began adding FallbackMemberBuilder test case
...
This is the first test case to use the new basic xUnit-style system. This
system is likely to evolve over time. Right now it's purely for
setUp, organizational and output purposes.
2011-10-14 22:05:22 -04:00
Mike Gerwitz
c10fc5818a
Added very basic formatted output and failure tolerance for test case
...
The one year anniversary of the beginning of the ease.js project is quickly
approaching. I find myself to be not quite where I had expected many months ago,
but find that the project has evolved so much further than I had event
originally anticipated. My main motivation behind the project continues to be
making my life at work easier, while providing an excellent library that others
can hopefully benefit from. If anything, it's a fascinating experiment and
clever hack around JavaScript.
Now I find myself with a newborn child (nearly four weeks old), who demands my
constant attention (and indeed, it is difficult to find the desire to put my
attention elsewhere). Still - I am a hacker. Software is my passion. So the
project must move forward.
I also find myself unwilling to create a blog for ease.js. I feel it's
inappropriate for a project that's in its (relative) infancy and does not have
much popularity (it has never been announced to anyone). As such, I feel that
commit messages will serve my purpose as useful journal entries regarding the
status of the project. They will also be interesting easter eggs for those who
would wish to seek them out for additional perspective on the project. (Granted,
one could easy script the discovery of such entries by examining the absurd
length of the commit message...perhaps the git log manpages would be useful).
So. Let's get back to the project.
ease.js is currently going through a strong refactoring in order to address
design issues that have begun to creep up as the project grew. The initial
design was a very simple one - a "series of modules", as it was originally
described in a CommonJS sense, that would provide features of a classical
Object-Oriented system. It would seem ironic that, having a focus on
classical Object-Oriented development, one would avoid developing the project in
such a paradigm. Instead, I wished to keep the design simple (because the
project seemed simple), more natural to JS developers (prototypal) and
performant (object literals do not have the overhead of instantiation). Well,
unfortunately, the project scope has increased drastically due to the success of
the implementation (and my playfulness), the chosen paradigm has become awkward
in itself and the performance benefit is indeed a micro-optimization when
compared with the performance of both the rest of the system and the system that
will implement ease.js as a framework.
You can only put off refactoring for so long before the system begins to trip
over itself and stop being a pleasure to work with. In fact, it's a slap in the
face. You develop this intricate and beautiful system (speaking collectively and
generally, of course) and it begins to feel tainted. In order to prevent it from
developing into a ball of mud - a truly unmaintainable mess - the act of
refactoring is inevitable, especially if we want to ensure that the project
survives and is actively developed for any length of time.
In this case, the glaring problem is that each of the modules are terribly,
tightly coupled. This reduces the flexibility of the system and forces us to
resort to a system riddled with conditionals. This becomes increasingly apparent
when we need to provide slightly different implementations between environments
(e.g. ES5/pre-ES5, production/development, etc and every combination).
Therefore, we need to decouple the modules in order to take advantage of
composition in order to provide more flexible feature sets depending on
environment.
What does this mean?
We need to move from object literals for the modules to prototypes (class-like,
but remember that ease.js exists because JS does not have "classes"). A number
of other prototypes can be extracted from the existing modules and abstracted to
the point where they can be appropriately injected where necessary. Rather than
using conditions for features such as fallbacks, we can encapsulate the entire
system in a facade that contains the features relevant to that particular
environment. This will also have the consequence that we can once again test
individual units rather than systems.
At the point of this commit (this entry was written before any work was done),
the major hurdle is refactoring the test cases so that they do not depend on
fallback logic and instead simply test specific units and skip the test if the
unit (the prototype) is not supported by the environment (e.g. proxies in a
pre-ES5 environment). This will allow us to finish refactoring the fallback and
environment-specific logic. It will also allow us to cleanly specify a fallback
implementation (through composition) in an ES5 environment while keeping ES5
detection mechanisms separate.
The remaining refactorings will likely be progressive. This all stemmed out of
the desire to add the method hiding feature, whose implementation varies
depending on environment. I want to get back to developing that feature so I can
get the first release (v0.1.0) out. Refactoring can continue after that point.
This project needs a version number so it can be used reliably.
2011-10-12 18:53:52 -04:00
Mike Gerwitz
f21f35019e
Renamed test case to MemberBuilder-MethodTest.js ( #25 )
2011-09-02 23:31:57 -04:00
Mike Gerwitz
b0cec62c98
test-member_builder-method freed from unnecessary dependencies for testing ( #25 )
2011-09-02 23:25:13 -04:00
Mike Gerwitz
1af7617a83
Moved instance binding test to MethodWrappersTest ( #25 )
...
- Ah; see how much nicer this is?
2011-09-02 23:07:42 -04:00
Mike Gerwitz
5937f7b0be
Transferred method __super() invocation test to MethodWrappersTest ( #25 )
2011-09-02 22:55:10 -04:00
Mike Gerwitz
40d555ee3f
Begin moving method wrapper tests into MethodWrappersTest ( #25 )
2011-09-02 22:47:35 -04:00
Mike Gerwitz
bc636637cc
Refactored new and override method wrappers into separate prototypes
...
- Note that, since we're mid-refactor, this is a bit of a mess
2011-08-31 00:24:19 -04:00
Mike Gerwitz
ce1370e025
Now passing getInst() directly into MethodwrapperFactory factory function, like good 'ol times
...
- I seem to have forgotten that this is necessary due to the static implementation
2011-08-31 00:05:07 -04:00
Mike Gerwitz
ba251d5a21
Ensuring combined tests run last
2011-08-29 23:17:44 -04:00
Mike Gerwitz
3c5362db0a
Added MethodWrapperFactory prototype
...
- Not yet used
2011-08-28 17:36:27 -04:00
Mike Gerwitz
758162ad0f
Began refactoring member_builder module into MemberBuilder prototype ( #25 )
2011-08-14 18:47:48 -04:00
Mike Gerwitz
fd95f38c87
Integrated VisibilityObjectFactory and removed old propobj ( #25 )
...
- Note that the excessive gluing is temporary
2011-08-13 23:58:08 -04:00
Mike Gerwitz
f3352e6d74
Added VisibilityObjectFactoryFactory ( #25 )
...
- This may be temporary, depending on the ultimate implementation. This is intended to ease into the refactoring.
2011-08-13 23:00:03 -04:00
Mike Gerwitz
567c9f59a0
Implemented FallbackVisibilityObjectFactory ( #25 )
2011-08-13 22:42:33 -04:00
Mike Gerwitz
cd1f8921de
Prototype tests now have 'Test' suffix, rather than 'test-' prefix ( #25 )
2011-08-11 23:25:20 -04:00
Mike Gerwitz
79652a1120
Moved non-fallback visibility object into VisibilityObjectFactory (system does not yet use it) ( #25 )
2011-08-11 23:11:37 -04:00
Mike Gerwitz
7a579ab2aa
Initial refactoring of class_builder module into ClassBuilder ctor ( #25 )
2011-08-09 17:27:26 -04:00
Mike Gerwitz
a401c31996
Can no longer override non-virtual methods ( #19 )
2011-08-04 00:44:20 -04:00
Mike Gerwitz
2569dacf15
Override keyword is now required to override a virtual method ( #19 )
2011-08-04 00:32:10 -04:00
Mike Gerwitz
bd4e18acc6
Implicit method hiding warning now applies to virtual methods as well as non-virtual ( #19 )
2011-08-03 22:40:55 -04:00
Mike Gerwitz
5f95fecda6
More appropriately named method hiding test ( #19 )
2011-08-03 22:10:46 -04:00
Mike Gerwitz
db18a61d30
[ #19 ] Began implementing method hiding (added warning for implicit hiding)
2011-07-06 19:35:00 -04:00
Mike Gerwitz
b74e03704b
Corrected member builder method test testCannotOverridePropertyWithMethod
2011-07-06 18:49:01 -04:00
Mike Gerwitz
65d988b1c6
Set stack trace limit to 20 frames for tests
2011-07-06 18:06:22 -04:00
Mike Gerwitz
1b1a4b60d5
Altered warning display and stack trace
2011-07-06 17:55:40 -04:00
Mike Gerwitz
81fa2ae424
Merge branch 'master' into 'virtual/master'
...
- Resolved conflicts
2011-06-30 23:00:13 -04:00
Mike Gerwitz
adb7e088b7
[ #19 ] Cannot declare virtual static methods
2011-06-09 22:22:14 -04:00
Mike Gerwitz
8b33471e42
Corrected non-virtual override test
2011-06-09 22:22:11 -04:00
Mike Gerwitz
08dc2559b4
[ #19 ] Cannot declare virtual properties
2011-06-09 19:46:13 -04:00
Mike Gerwitz
7f24d094ba
[ #19 ] Re-added FinalClass tests (we still want those ;))
2011-06-08 01:28:45 -04:00
Mike Gerwitz
4fea62a8ed
[ #19 ] Removed 'final' keyword and all associated logic
...
- Kept FinalClass'
2011-06-08 01:26:04 -04:00
Mike Gerwitz
8b83e85c43
[ #19 ] Implemented 'virtual' keyword
...
- Baby steps. 'override' keyword is not yet necessary.
- Final not yet removed
2011-06-08 01:11:53 -04:00
Mike Gerwitz
557dcf6904
Fixed static bug and removed late static binding
...
- Late static binding will be revisited in the future
2011-05-31 22:29:07 -04:00
Mike Gerwitz
9db4e8d99f
Supplying alternative to getMethodInstance() for static methods
2011-05-30 23:03:08 -04:00
Mike Gerwitz
48cb9797c4
Added tests to ensure constants support different levels of visibility
2011-05-30 10:55:40 -04:00
Mike Gerwitz
44ea2552ba
Added minified files to tests
2011-05-23 18:38:13 -04:00
Mike Gerwitz
fdee02adc9
Combined file now exports {Final,Abstract}Class
2011-05-23 07:12:46 -04:00
Mike Gerwitz
fe02c78f1d
Fixed tests containing unknwon keywords
...
- Broken from previous commit
2011-05-22 22:21:32 -04:00
Mike Gerwitz
76bc7361d3
Implemented GH#2 - Keyword restrictions; throw exception when unknown keywords are used
2011-05-22 22:11:57 -04:00
Mike Gerwitz
cf344186fc
Implement GH#1 Provide useful error when attempting to extend from non-constructor
2011-05-22 21:54:41 -04:00
Mike Gerwitz
8c62ee021c
Added support for final subtypes
2011-05-22 21:35:29 -04:00
Mike Gerwitz
a67d704837
Added support for named abstract subclasses
2011-05-22 21:05:46 -04:00
Mike Gerwitz
e0de030cee
Implemented AbstractClass
...
- Some of this functionality requires further refactoring
2011-05-22 16:08:48 -04:00
Mike Gerwitz
623c3df429
Reorganized abstract tests
2011-05-22 11:33:11 -04:00
Mike Gerwitz
9690663d1c
Added support for final classes
...
- This commit was originally many. Unfortunately, certain Git objects became
corrupt shortly after my 500th commit due to HDD issues. Due to the scope, I
was unable to recover the set of commits I needed (after an hour of trying
every method).
- Fortunately, vim's swap files came to the rescue. Had I been able to
properly shut down my PC, I would have been rather frustrated.
2011-05-22 11:19:51 -04:00
Mike Gerwitz
6e1d796092
Implemented constant properties
2011-05-19 19:48:51 -04:00
Mike Gerwitz
2d91a221aa
Const keyword now results in static property
2011-05-19 19:07:31 -04:00
Mike Gerwitz
030bdef821
Static keyword cannot be used with const for properties
2011-05-19 18:30:55 -04:00
Mike Gerwitz
f3c1d0f9af
Methods cannot be declared as constant
2011-05-19 07:54:51 -04:00
Mike Gerwitz
c29cf0e66d
Util unnecessary in final test case
2011-05-19 07:52:29 -04:00
Mike Gerwitz
0c5293991c
Disallowed use of final keyword with properties
2011-05-18 20:51:02 -04:00
Mike Gerwitz
54e9c14051
Added late static binding tests
...
- This simply tests a very important consequence of the existing implementation
- Regression test
2011-05-18 20:42:25 -04:00
Mike Gerwitz
f4b31f2639
Corrected member_builder-prop tests
...
- Doesn't properly add method; added as property
2011-05-18 20:42:18 -04:00
Mike Gerwitz
4c74f2a1f2
Added final keyword for methods
2011-05-15 19:11:23 -04:00
Mike Gerwitz
61c29c61dd
Added tests to ensure private static getters/setters are properly implemented
2011-05-14 11:22:27 -04:00
Mike Gerwitz
69c5f8b7a5
Corrected public static getter/setter sub-subtype inheritance test
2011-05-14 11:07:59 -04:00
Mike Gerwitz
3185cb13d5
Added tests to ensure protected static getters/setters operate as intended
2011-05-14 11:07:51 -04:00
Mike Gerwitz
d59bac0978
Added test to ensure users can't be tricky and try to break static property encapsulation
2011-05-13 21:27:53 -04:00
Mike Gerwitz
775438c1b6
Implemented private static properties
2011-05-13 00:55:09 -04:00
Mike Gerwitz
9b20cdff48
Initial concept for protected static property access
2011-05-12 00:25:34 -04:00
Mike Gerwitz
9067bbf0cf
Static property accessor method is no longer enumerable
2011-05-11 20:53:43 -04:00
Mike Gerwitz
fa8d1bebe1
Implemented private static methods
2011-05-11 20:10:10 -04:00
Mike Gerwitz
a303adddea
Added tests to ensure that static method overrides are supported
2011-05-11 18:36:49 -04:00
Mike Gerwitz
9822894eae
Protected static methods are now inherited by subtypes
2011-05-11 17:56:48 -04:00
Mike Gerwitz
91a47e4dcd
[Bug Fix] Concrete class constructor is no longer invoked on extend
...
- The ctor must be instantiated for use in the prototype chain
- This was working in the past, but apparently no test existed for it and
refactoring broke it
2011-05-10 23:32:13 -04:00
Mike Gerwitz
3c774a7b16
Implemented protected static members within static methods
...
- Still not inheritence
2011-05-10 19:54:23 -04:00
Mike Gerwitz
a246dd67e0
Began adding protected static members (supported for instance methods)
...
- No inheritance support yet
2011-05-09 23:09:32 -04:00
Mike Gerwitz
26cf32abe5
Enhanced static property setter to support setting to both undefined and null values
2011-04-13 23:53:03 -04:00
Mike Gerwitz
462671cfba
Can no longer set values of undeclared static properties
2011-04-13 23:45:26 -04:00
Mike Gerwitz
7e53df0e84
Static property setter now returns calling class
2011-04-13 23:35:54 -04:00
Mike Gerwitz
e3c526b89d
Writes to public static properties now work properly
2011-04-13 23:06:24 -04:00
Mike Gerwitz
44cd8db82d
Began implementing static property method (getter)
2011-04-13 22:38:05 -04:00
Mike Gerwitz
63a4f95f65
Fix for overriding protected with protected
...
- A better solution may be explored
2011-04-13 14:48:20 -04:00
Mike Gerwitz
4a90b7b809
Public static properties references are now shared with subtypes
2011-04-10 22:32:46 -04:00
Mike Gerwitz
aead20290c
Inherited static members are no longer copied by reference
...
- Sharing values with supertype = bad
2011-04-05 23:47:44 -04:00
Mike Gerwitz
604e03fa55
util.clone() no longer falsely attempts to clone functions
2011-04-05 23:47:08 -04:00
Mike Gerwitz
4a0537223b
Added deep copy to util.copyTo()
2011-04-05 23:38:13 -04:00
Mike Gerwitz
fad503422e
Subtypes now inherit public static members from their supertype
2011-04-05 23:11:25 -04:00
Mike Gerwitz
7560d57619
Implemented __self for static access
2011-04-05 22:07:13 -04:00
Mike Gerwitz
ea0d18d8eb
Added regression test to ensure 'this' is bound to the class definition rather than instance within static methods
2011-04-05 19:52:49 -04:00
Mike Gerwitz
af53fe81b4
Added support for public static getters/setters
2011-04-05 00:08:39 -04:00
Mike Gerwitz
4d0724b85d
Added util.copyTo()
2011-04-05 00:05:18 -04:00
Mike Gerwitz
e93a4db3e4
Began implementing public static members
2011-04-04 23:07:01 -04:00
Mike Gerwitz
dddd26761c
Current __self -> __inst; __self will be used in a different manner in following commits
2011-04-03 11:57:15 -04:00
Mike Gerwitz
1abf127ccc
Protected property values, when set by the parent, are now available to subtypes
2011-04-02 10:58:26 -04:00
Mike Gerwitz
61f2f7e22d
Methods can now be properly overridden when visibility is escalated
2011-04-01 06:28:45 -04:00
Mike Gerwitz
6ade1c021f
Implemented GH#15 Access to public interface from within class instance
2011-03-30 00:55:27 -04:00
Mike Gerwitz
9d47e64ac3
Properties can no longer be declared as abstract
2011-03-29 23:48:17 -04:00
Mike Gerwitz
8a3010c964
Implemented GH#3 Abstract keyword cannot be used with private members
2011-03-29 23:39:49 -04:00
Mike Gerwitz
b8e512c69e
Formatted prop_parser tests
2011-03-29 23:28:45 -04:00
Mike Gerwitz
5cb0b8355f
__super() method is now properly set on context
2011-03-29 22:02:42 -04:00
Mike Gerwitz
bc8ec4e0be
Added tests for forced-public methods
2011-03-28 19:17:38 -04:00
Mike Gerwitz
2555a0db47
Added tests for reserved members
2011-03-28 18:58:23 -04:00
Mike Gerwitz
30d10ff9d7
Constructor must now be public
2011-03-23 21:35:25 -04:00
Mike Gerwitz
fba584171c
Placed test targets in their own Makefile to faciliate using tests as prerequisites for ease-full.js, ensuring it'll be rebuilt on test modification
2011-03-20 02:28:40 -04:00
Mike Gerwitz
4d2852627e
All interface members must now be public
2011-03-19 00:58:42 -04:00
Mike Gerwitz
5af833ab05
Disallowing member redeclaration in same class definition
2011-03-19 00:48:02 -04:00
Mike Gerwitz
7070e55254
Added test to ensure same visibility de-escalation rules apply to concrete implementations of Interface methods
2011-03-18 23:55:56 -04:00
Mike Gerwitz
10ef0b2139
Added test to ensure __super() works properly with protected method overrides
2011-03-18 23:49:28 -04:00
Mike Gerwitz
ce736bea55
Visibility de-escalation no longer permitted
2011-03-18 23:42:07 -04:00
Mike Gerwitz
36ae6bcd81
Now throwing expection if more than two arguments are passed to extend() when implementing
2011-03-16 19:50:47 -04:00
Mike Gerwitz
14cac6b461
Can now specify parent class in extend() when implementing atop an empty base
2011-03-16 19:24:02 -04:00
Mike Gerwitz
80f3ec6b68
Preventing base specification via extend() when implementing off of an existing base class
2011-03-16 19:06:16 -04:00
Mike Gerwitz
58cb196213
Extending class while using temporary name object is now permitted
2011-03-16 18:18:33 -04:00
Mike Gerwitz
66758500e6
Class metadata is now stored in class object (first step in working with GC)
2011-03-14 23:43:56 -04:00
Mike Gerwitz
7b766c1b14
Altered toString() defaults to be more consistent with v8
2011-03-14 18:16:53 -04:00
Mike Gerwitz
9a135a064c
Added pre-ES5 test to ensure we can catch fallback bugs quickly between browser tests (preferably, before even committing)
2011-03-13 22:08:08 -04:00
Mike Gerwitz
d05652f880
Fixed visibility issues in IE6
...
- Wasn't properly falling back
2011-03-13 21:47:40 -04:00
Mike Gerwitz
e1bb48a8d9
Added visibility test to ensure supertypes do not have access to private members of subtypes when invoked
2011-03-13 15:39:14 -04:00
Mike Gerwitz
e03c081cfd
Fixed bug that made private members of a supertype inaccessible to methods that have not been overridden by a subtype
...
- In doing so, abandoned the super identifier (sid) for a more elegant solution with class ids (cid's)
- This permits fast and easy private member swapping via getMethodInstance() in class.js
2011-03-13 04:51:00 -04:00
Mike Gerwitz
6b374902ae
Separated private members into a separate object (propobj) to prepare for future modifications
...
- This incurs a performance hit for accessing protected members, and even further for public, internally
- But speeds up access to private members, likely due to there being less members
2011-03-12 23:48:38 -05:00
Mike Gerwitz
05e249def4
Added result explanations to method invocation performance tests
2011-03-11 19:27:07 -05:00
Mike Gerwitz
5a420fae4e
Added perf tests for invoking class methods
2011-03-11 19:20:05 -05:00
Mike Gerwitz
d2aa24ef66
Added performance tests for setting properties, internally and externally
2011-03-11 19:16:52 -05:00
Mike Gerwitz
311e39d67c
Added performance test for reading properties, internal and external
2011-03-11 19:14:10 -05:00
Mike Gerwitz
a8767a1da0
Added property/method class definition performance tests
2011-03-10 23:32:33 -05:00
Mike Gerwitz
cdc88bea4c
Added count to perf output to calculate individual cost
2011-03-10 23:07:52 -05:00
Mike Gerwitz
37bf2fa353
Began adding performance tests
2011-03-10 22:43:36 -05:00
Mike Gerwitz
e0fb37daa0
Overridden methods now property return instance when returning 'this'
...
- There may be a cleaner way to do this. This is a quick fix.
2011-03-10 12:40:55 -05:00
Mike Gerwitz
84363aca45
Added test to ensure correct instance is returned when returning 'this' from a parent method
2011-03-10 12:24:59 -05:00
Mike Gerwitz
7427958ec0
Returning 'this' from a method will now return the object instance, not the internal property object
2011-03-10 12:19:39 -05:00
Mike Gerwitz
354061cd5f
Continuing to use BASH for now for rmtrail test
2011-03-07 23:16:14 -05:00
Mike Gerwitz
960be880ab
Merge branch 'master' into visibility/master
2011-03-07 23:09:02 -05:00
Mike Gerwitz
ab8faad53f
/bin/{bash => sh} to support system with only sh installed
...
- e.g. FreeBSD
- Nothing in the scripts actually needs BASH anyway
2011-03-07 22:54:59 -05:00
Mike Gerwitz
841b5ac5a5
Replaed all __{define,lookup}[GS]etter__'s with defineProperty/getOwnPropertyDescriptor
2011-03-07 22:44:47 -05:00
Mike Gerwitz
00378da630
Merge branch 'master' into visibility/master
2011-03-07 09:03:34 -05:00
Mike Gerwitz
fbc58384b4
Provided a more accurate mechanism for detecting Object.defineProperty (tests in IE8 fixed)
2011-03-07 09:03:03 -05:00
Mike Gerwitz
4e2f174667
Added test for good measure to ensure class instances do not share protected member values
2011-03-07 00:19:56 -05:00
Mike Gerwitz
e05a65d5fa
Initial concept of inheriting protected/private members
2011-03-07 00:14:43 -05:00
Mike Gerwitz
30bfde50cd
Tada! Private members.
2011-03-06 23:03:39 -05:00
Mike Gerwitz
c1765cd720
Using visibility fallback for browsers that do not support getters/setters
2011-03-06 22:43:14 -05:00
Mike Gerwitz
5d8fdc5204
Merge branch 'master' into visibility/master
...
Conflicts:
lib/class.js
2011-03-06 12:39:26 -05:00
Mike Gerwitz
517b2be464
Fix toString() override for IE
...
- All tests once again pass on IE6
2011-03-06 12:38:31 -05:00
Mike Gerwitz
a1c1ddff74
IE6 was blowing up on getter/setter test
2011-03-06 10:56:31 -05:00
Mike Gerwitz
4eda438f14
Outputting current test for browser
...
- Output is hidden on success, but useful on failure
2011-03-06 10:55:13 -05:00
Mike Gerwitz
6b79999adb
IE6 Error.prototype.toString() !== Error.message
2011-03-06 10:37:20 -05:00
Mike Gerwitz
0ccab4f8d9
Corrected test combine process; was not including tests in ease-full.js
2011-03-06 10:15:32 -05:00
Mike Gerwitz
c0f351d173
Merge branch 'master' into visibility/master
2011-03-05 23:12:55 -05:00
Mike Gerwitz
d6cca75093
Can now override toString() method of a class
2011-03-05 23:11:13 -05:00
Mike Gerwitz
b321610cc7
Interface name included in instantiation error, if available
2011-03-05 21:46:44 -05:00
Mike Gerwitz
6f7dabe35e
Interface name is included in declaration errors, if available
2011-03-05 17:27:02 -05:00
Mike Gerwitz
2967cc7a9a
Class name is now provided in all errors where name is available, within class module
2011-03-05 13:13:53 -05:00
Mike Gerwitz
da8be9affa
Interface definition errors now contain class name when available
2011-03-05 12:57:21 -05:00
Mike Gerwitz
5f739e604b
Class name is included in definition errors when available
2011-03-05 12:56:14 -05:00
Mike Gerwitz
635395b303
Merge branch 'master' into visibility/master
2011-03-05 03:23:11 -05:00
Mike Gerwitz
2c2701f4ab
Implemented staging-style named class definition when implementing interfaces
2011-03-05 03:22:45 -05:00
Mike Gerwitz
0f9454b79b
interface() no longer returns a usable class
...
- Number of reasons. First and foremost, it doesn't make sense to return a usable class with no body/definition
- Secondly, to make the following commit(s) possible and consistent
2011-03-05 02:59:21 -05:00
Mike Gerwitz
ace9f4c1ea
Began implementing class name staging (implement() does not yet work with it)
2011-03-05 00:33:47 -05:00
Mike Gerwitz
0ccdf07145
Implemented strict argument check for interface creation
2011-03-04 23:43:30 -05:00
Mike Gerwitz
b158e542d5
Declaring named class will throw error for extreaneous arguments
2011-03-04 16:36:15 -05:00
Mike Gerwitz
dca7653adf
Merge branch 'master' into visibility/master
2011-03-04 00:26:02 -05:00
Mike Gerwitz
009c4a93e9
Interfaces now have sane/useful values when converted to strings
2011-03-04 00:19:02 -05:00
Mike Gerwitz
85e687e29c
Added Interface.isInterface()
2011-03-03 23:59:37 -05:00
Mike Gerwitz
4148f8742d
Merge branch 'master' into visibility/master
...
Conflicts:
test/test-class-extend.js
2011-03-03 23:29:20 -05:00
Mike Gerwitz
81d03cb984
Altered class toString() representations to be more consistent with JS
2011-03-03 23:00:59 -05:00
Mike Gerwitz
e2cba458d8
Class instances now have different default toString() implementations than uninstantiated classes
...
- Instance id is not yet included, as that is currently in a different branch
2011-03-03 22:53:20 -05:00
Mike Gerwitz
840a495017
Began implementing named classes
...
- toString() implementation
2011-03-03 22:33:18 -05:00
Mike Gerwitz
d23ae6210c
Initial implementation of natural class definition by invoking class module
2011-03-03 19:43:20 -05:00
Mike Gerwitz
3f915d3644
The interface module may now be invoked, providing a more natural looking means of declaring interfaces
2011-03-03 19:08:24 -05:00
Mike Gerwitz
bc9e2bb7b2
Fix setting public properties
...
- This currently only works with ES5 engines
- Fallback to follow so this will work with pre-ES5 engines
- As such, I do not recommend using this commit outside of ES5-compliant engines that work properly with getters/setters
- This does NOT include IE8, as IE8 only works with getters/setters on DOM elements
2011-03-02 23:21:10 -05:00
Mike Gerwitz
74c2fc57c1
Initial implementation of protected members
...
- This was quite the pain in the ass
- There are additional considerations. I DO NOT recommend using this commit. Check out a later commit.
2011-03-02 20:43:24 -05:00
Mike Gerwitz
2af7bcf45d
Merge branch 'master' into visibility/master
2011-03-02 07:54:52 -05:00
Mike Gerwitz
d74c01b562
Removed visibility dependency from test-class-abstract
2011-03-02 07:53:58 -05:00
Mike Gerwitz
40228361a1
test-class-parent no longer relies on member visibility to succeed
...
- This is important for pending changes
2011-03-02 07:51:18 -05:00
Mike Gerwitz
e239352fc0
Resolved bug that was causing the system to think that Object prototype members were part of the abstract member list when attempting to define a method with the same name
2011-03-01 12:11:36 -05:00
Mike Gerwitz
02d0c07f98
Extended existing visibility tests to include methods
2011-01-27 22:39:52 -05:00
Mike Gerwitz
38c16048cb
Began adding protected/private member support
...
- No longer adding ANY properties to prototype
- protected/private members no longer part of the public access level
2011-01-27 22:35:40 -05:00
Mike Gerwitz
881edc0cc6
Preparing to remove abstractMethods from public prototype; now uses hash for performance since it no longer needs to be referenced cleanly externally
...
- It will be later referenced via reflection
2011-01-25 00:13:47 -05:00
Mike Gerwitz
188ad2f4eb
Getters/setters are not supported within interface definitions
2011-01-24 23:56:54 -05:00
Mike Gerwitz
c7b262b271
Concrete methods cannot be overridden by abstract methods
2011-01-24 23:52:06 -05:00
Mike Gerwitz
37e5b1d94d
util.propCopy() no longer needed
2011-01-24 23:38:27 -05:00
Mike Gerwitz
2a54662716
Added getter/setter keywords to propParse
2011-01-24 23:27:55 -05:00
Mike Gerwitz
96d2f74dae
Method builder wraps overrides in an override function
2011-01-21 23:16:20 -05:00
Mike Gerwitz
e03d5861bb
Overridden methods must have >= length parameter lists
2011-01-21 22:19:22 -05:00
Mike Gerwitz
b8a6aa2af6
Method builder does not permit overriding properties with methods
2011-01-21 21:53:31 -05:00
Mike Gerwitz
12e5b48a7d
Cannot override method with property
2011-01-21 21:43:18 -05:00
Mike Gerwitz
dea6972416
Began adding basic method builder (currently operates the same as property builder)
...
- They are essentially the same, but the method builder will have additional logic (e.g. method overriding) and support different keywords
2011-01-21 20:54:55 -05:00
Mike Gerwitz
906e468cdf
Refactored test logic that will be shared between multiple members into inc-member_builder-common.js to reduce code duplication
2011-01-21 20:46:24 -05:00
Mike Gerwitz
2205af8c07
Can initialize member object with existing objects for each level of visibility
2011-01-20 23:56:39 -05:00
Mike Gerwitz
96cee9660b
Began adding member_builder.initMembers()
2011-01-20 23:53:00 -05:00
Mike Gerwitz
3c45912f25
Added getter/setter to member builder
2011-01-20 23:50:53 -05:00
Mike Gerwitz
b34e0b45f6
Property member builder tests now use object and deepEqual() to ensure that property is copied as intended
2011-01-20 22:22:12 -05:00
Mike Gerwitz
f25ae7cb43
Made property member builder tests more specific to ensure that properties are not copied to multiple prototypes
2011-01-20 22:19:06 -05:00
Mike Gerwitz
a58b7989ee
Throws TypeError if multiple visibility keywords are given to member builder
2011-01-20 22:11:36 -05:00
Mike Gerwitz
9a5fe96c3e
Result of buildProp() in tests unneeded
2011-01-20 21:53:18 -05:00
Mike Gerwitz
7f92a76e1f
Member builder uses public prototype by default
2011-01-20 21:50:52 -05:00
Mike Gerwitz
f27b0b01ab
Member builder recognizes private members
2011-01-20 21:48:09 -05:00
Mike Gerwitz
0ba3122db5
Member builder recognizes protected members
2011-01-20 21:46:49 -05:00
Mike Gerwitz
23a7d9d540
Began adding member_builder
2011-01-18 23:47:58 -05:00
Mike Gerwitz
96f5b8ff58
Multiple spaces now properly handled in keyword parser
2011-01-18 19:33:33 -05:00
Mike Gerwitz
7dab5c7b20
Keywords are now returned by propParse
2011-01-17 22:24:02 -05:00
Mike Gerwitz
1f661bebcd
Altered property keyword parser tests to be more easily recognizable
2011-01-17 20:41:04 -05:00
Mike Gerwitz
afc5d4668d
Abstract classes also have a more intuitive string representation
2011-01-17 20:22:30 -05:00
Mike Gerwitz
d19638be4f
Classes now return a more intuitive string representation
2011-01-17 20:20:39 -05:00
Mike Gerwitz
1b40451aad
Put class-implement tests into self-executing functions in testdox format to make them more easily recognized
...
- Eventually, I'd like for all the tests to be in this format
2011-01-11 19:03:30 -05:00
Mike Gerwitz
7fb0f6a820
Classes now contain implement() method
2011-01-10 19:56:09 -05:00
Mike Gerwitz
e822bc8840
Combined test now testing for Interface export
2011-01-09 02:00:36 -05:00
Mike Gerwitz
aa1d38b007
Added deep cloning for objects
2011-01-09 01:46:46 -05:00
Mike Gerwitz
0f905481bf
Added deep cloning for arrays
2011-01-09 01:38:40 -05:00
Mike Gerwitz
56c13b757b
isInstanceOf() now works with interfaces
2011-01-04 00:37:54 -05:00
Mike Gerwitz
c3b00ab9b7
Encapsulating implemented list (can use isInstanceOf() or a future reflection API)
2011-01-03 23:41:45 -05:00
Mike Gerwitz
0b112dac51
Abstract method list is now updated for classes that implement interfaces
2011-01-03 23:25:27 -05:00
Mike Gerwitz
c12ac412cb
Class.{implements => implement} - like Class.extend(), we're looking for a verb
2010-12-30 09:54:53 -05:00
Mike Gerwitz
5b3ecf853b
Exposed Interface
2010-12-30 09:24:52 -05:00
Mike Gerwitz
d5d6082bfb
Interface methods are now copied to the class prototype (basic implementation - no deep copy for interface subtypes yet)
2010-12-29 23:34:12 -05:00
Mike Gerwitz
459d5e967b
Classes now store implemented interfaces in a list (does not yet import methods)
2010-12-29 23:33:30 -05:00
Mike Gerwitz
80b0732be1
Interfaces cannot be instantiated
2010-12-29 22:40:23 -05:00
Mike Gerwitz
b357293890
Classes now tested using isInstanceOf()
2010-12-29 21:45:33 -05:00
Mike Gerwitz
76969201fb
Added isA() as an alias for isInstanceOf()
2010-12-29 21:37:11 -05:00
Mike Gerwitz
6a24f2ad13
Added isInstanceOf() partially applied function to class instances
2010-12-29 21:32:16 -05:00
Mike Gerwitz
83cecb5fdc
Instantiating test object only once
2010-12-29 21:18:03 -05:00
Mike Gerwitz
96909732db
Began adding isInstanceOf, starting with prototype chain checks
2010-12-29 21:13:21 -05:00
Mike Gerwitz
004ccfa05b
Interfaces cannot inherit from Classes
2010-12-28 21:56:55 -05:00
Mike Gerwitz
c9d0e027fa
Added isClass() and isClassInstance() methods
2010-12-28 20:58:42 -05:00
Mike Gerwitz
928a0ea297
Removed Interface.abstractMethod() in favor of 'abstract' keyword
2010-12-28 20:13:50 -05:00
Mike Gerwitz
44186068b4
Class constructors are now self-invoking
...
- Permits omitting 'new' keyword, which is a style preferred by some (such as Crockford)
- It's very difficult to use apply() with the 'new' keyword - this method permits a simple way of passing an argument list to the constructor
2010-12-28 19:05:53 -05:00
Mike Gerwitz
1fc791fa31
Altered secure property test to work properly in IE8, which falls back due to its incomplete implementation of Object.defineProperty()
2010-12-28 13:45:33 -05:00
Mike Gerwitz
c29d3a15d7
Corrected line over 80 character mark
2010-12-28 13:21:48 -05:00
Mike Gerwitz
dce46bb555
Tests will not attempt to use Object.isFrozen() unless defined
2010-12-28 09:14:54 -05:00
Mike Gerwitz
665b11e116
Removed forEach from tests to support engines that have not yet implemented that method (new in ES5)
2010-12-28 09:14:35 -05:00
Mike Gerwitz
ac6fb40c21
IE does not like 'item' as a var name
2010-12-28 09:04:27 -05:00
Mike Gerwitz
2325bd9a8f
Resolved getter/setter test issues for browsers that do not support the functionality
...
- __define{Getter,Setter}__ had to be used rather than object notation due to syntax errors in older browsers
2010-12-28 09:02:23 -05:00
Mike Gerwitz
3347b8f6d5
Added ease-full.js, which includes tests to be run client-side (initial implementation; may be buggy)
2010-12-28 00:23:13 -05:00
Mike Gerwitz
828a366f29
Renamed prop_parse.{parse => parseKeywords}
2010-12-27 23:12:37 -05:00
Mike Gerwitz
1b708bac63
Added property keyword parser tests (was previously encapsulated)
2010-12-27 23:04:55 -05:00
Mike Gerwitz
1364d5967f
Abstract methods must contain a parameter list as an array
2010-12-27 22:30:28 -05:00
Mike Gerwitz
28cf2d0e2b
Moved util abstract method tests into their own test case
2010-12-27 22:24:41 -05:00
Mike Gerwitz
69391f9b48
Finished correcting assertion tests with new implementation
2010-12-27 22:20:29 -05:00
Mike Gerwitz
e789e58000
Removed Class.abstractMethod in favor of property keyword
2010-12-27 22:11:37 -05:00
Mike Gerwitz
9666a5f80f
Began adding property keyword parsing (concept)
2010-12-27 20:49:59 -05:00
Mike Gerwitz
3ef2a28e24
Merge branch 'master' of github.com:mikegerwitz/easejs
2010-12-23 15:59:57 -05:00
Mike Gerwitz
f58586fc94
Added tests to ensure constructor is properly applied to subtypes
2010-12-23 15:57:45 -05:00
Mike Gerwitz
98fd1e7c7c
All tests now using common.require() to prepare for client-side testing
2010-12-21 23:25:12 -05:00
Mike Gerwitz
a3cf31aa40
Tests now explicitly specify relative path to tested module
...
- Certain modules otherwise have naming conflicts (e.g. util in node.js is loaded instead)
2010-12-21 22:51:42 -05:00
Mike Gerwitz
445fc936a2
Added basic test for combined file (does not yet test functionality)
2010-12-20 22:49:52 -05:00
Mike Gerwitz
8b8c7e8533
separated rmtrail function into its own tool and added test
2010-12-20 22:19:18 -05:00
Mike Gerwitz
3ffb150207
Tests for util.defineSecureProp() (had accidently omitted from previous commit)
2010-12-20 19:13:27 -05:00
Mike Gerwitz
600e389b40
Refactored abstract method logic out of util.propCopy() into class extend()
2010-12-19 00:11:39 -05:00
Mike Gerwitz
2c49e9719f
util.propParse() now ignores instance prototype properties
2010-12-18 07:07:27 -05:00
Mike Gerwitz
53a62742c5
Added another subtype to test case to ensure parent property intialization of class instances is recursive
2010-12-17 00:01:22 -05:00
Mike Gerwitz
ec27eb2286
Added index to propCopy() performDefault test message
2010-12-16 23:57:41 -05:00