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
Mike Gerwitz
a06d9a7204
Ensured __initProps() is treated as a reserved method and cannot be declared within Classes
2010-12-16 23:55:56 -05:00
Mike Gerwitz
6b6ffe0134
propCopy() parser function overrides can now invoke default functionality
2010-12-16 23:49:52 -05:00
Mike Gerwitz
591434b82f
[*] Previous commit (property cloning per instance) now applied to subtypes as well
2010-12-16 23:37:18 -05:00
Mike Gerwitz
fe853b505b
[*] Properties are no longer shared between class instances
...
- Properties were previously shared on the prototype level, acting as though they were static class properties, which can cause some nasty bugs
2010-12-16 23:18:30 -05:00
Mike Gerwitz
6efaba7fc5
Added util.clone(); does not yet support deep cloning
2010-12-16 23:15:42 -05:00
Mike Gerwitz
a2c894b6bb
Added ability to override propCopy() parser functions
2010-12-16 21:11:07 -05:00
Mike Gerwitz
5126c71a2d
Using TypeError instead of Error for property type inconsistiencies
2010-12-10 00:00:47 -05:00
Mike Gerwitz
25dc7e031e
Ensured properties cannot be overridden with methods
2010-12-07 20:24:51 -05:00
Mike Gerwitz
eced0a7e91
Both concrete and abstract methods now use the same callback in propParse()
...
- Now uses an is_abstract parameter
- Intended to reduce clutter and duplicate code
2010-12-07 00:46:50 -05:00
Mike Gerwitz
994b8e16fa
[1 failing test] Added support for 'each' in propParse()
2010-12-07 00:39:25 -05:00
Mike Gerwitz
fd2b3ccc6d
Added support for getters/setters in propParse()
2010-12-05 20:50:13 -05:00
Mike Gerwitz
20b78ba73a
Minor formatting change in propParse test
2010-12-04 14:05:56 -05:00
Mike Gerwitz
6fd31a8e76
Added abstract method support to propParse()
2010-12-04 14:03:26 -05:00
Mike Gerwitz
4037cc1343
Began adding util.propParse() to simplify design (supports scalar, arr and obj props and concrete methods)
2010-12-04 13:59:06 -05:00
Mike Gerwitz
60025bd048
Added extend method to Interface
2010-12-01 23:27:31 -05:00
Mike Gerwitz
611ee9ab35
Added tests to assure that intefaces can be extended from other interfaces
2010-12-01 23:13:21 -05:00
Mike Gerwitz
0d45716a43
Added missing space to error string
2010-12-01 23:04:22 -05:00
Mike Gerwitz
84dcca35d2
Interface prototype contains defined methods
2010-12-01 23:01:20 -05:00
Mike Gerwitz
789c7f9b5e
Moved extend-related tests to their own file for interfaces in preparation for additional extend tests
2010-12-01 21:54:02 -05:00
Mike Gerwitz
3ebe82c0a5
Interface does not depend on Class
2010-12-01 21:46:36 -05:00
Mike Gerwitz
c910dafb76
Interfaces permit only abstract methods
2010-12-01 21:39:41 -05:00
Mike Gerwitz
2e930482d2
Abstract methods of subtypes overriding abstract methods must be compatiable with the previous definition
2010-12-01 21:34:57 -05:00
Mike Gerwitz
2e8097e21e
Altered abstract method declaration (using strings to represent arguments rather than a function)
2010-12-01 21:13:51 -05:00
Mike Gerwitz
837422c46f
Added util.isAbstractMethod
2010-12-01 21:00:15 -05:00
Mike Gerwitz
2edcb8a75e
Only methods are permitted within interface declarations
2010-12-01 19:38:30 -05:00
Mike Gerwitz
b294f84481
Began Interface development
2010-12-01 19:27:40 -05:00
Mike Gerwitz
1e2e73c9f0
Began moving utility methods into their own module
2010-11-15 23:44:15 -05:00
Mike Gerwitz
0e232b4a2c
Freezing class object after creation
2010-11-15 23:22:24 -05:00
Mike Gerwitz
0b4ec19911
Case of poor copy-and-paste
2010-11-15 18:31:10 -05:00
Mike Gerwitz
d4593725a4
If a definition is provided for an abstract method, the concrete implementation must be compatiable (proper number of arguments)
2010-11-14 21:33:13 -05:00
Mike Gerwitz
bb631eb706
Added test to ensure constructor of abstract supertypes can be called
2010-11-14 21:09:24 -05:00
Mike Gerwitz
0d1ba74415
Ensured abstract classes cannot be instantiated and permitted their instantiation during extending so that it may be used in the subclass's prototype
2010-11-14 20:48:39 -05:00
Mike Gerwitz
113e3b974f
Properly implemented abstract methods list
2010-11-14 20:30:33 -05:00
Mike Gerwitz
d3ba8a9dfe
Corrected abstract class tests (.equals() = .equal())
2010-11-14 01:11:24 -05:00
Mike Gerwitz
a083313538
Began implementing abstract methods
2010-11-14 00:47:27 -05:00
Mike Gerwitz
88b1a72255
Added some beginning test cases for abstract classes (will currently fail)
2010-11-14 00:41:18 -05:00
Mike Gerwitz
97f3c5ed5d
Added tests to ensure it is possible to extend classes that were not previously created using Class.extend()
2010-11-11 21:02:09 -05:00
Mike Gerwitz
e56ecce61f
Added index.js
2010-11-11 08:50:05 -05:00
Mike Gerwitz
16a91b728e
Methods can no longer be overridden with non-methods (anything other than a Function)
2010-11-10 23:42:26 -05:00
Mike Gerwitz
61985eea47
Added checks for ES5 features
2010-11-10 23:28:20 -05:00
Mike Gerwitz
8422bea1d6
Added getter/setter override support
2010-11-10 23:19:46 -05:00
Mike Gerwitz
0c963d1d00
Added access to parent prototype via parent property
2010-11-10 22:54:24 -05:00
Mike Gerwitz
607bbf7f4c
Added support for _super method
...
- Motivation from John Reisg's "Simple Javascript Inheritance": http://ejohn.org/blog/simple-javascript-inheritance/
2010-11-10 22:49:27 -05:00
Mike Gerwitz
6ea6fd0bb7
Began adding parent tests (parent method call currently fails)
2010-11-10 22:19:50 -05:00
Mike Gerwitz
26b70bcd93
Changed license to LGPL
...
My reason for doing so is more practical - for the same reasons that GNU released glib and
other libraries under the LGPL. The reason is that there are so many other alternatives out
there that are released under more permissive licenses. This isn't anything special. Therefore,
to encourage its adoption, I've released it under the LGPL.
All my larger projects/libraries that have few/no alternatives will be released under the
GPL/AGPL.
2010-11-10 22:07:03 -05:00
Mike Gerwitz
fdf389ba2e
Added inheritance instanceof assertions
2010-11-10 21:39:09 -05:00
Mike Gerwitz
909542d19b
Added support for extending classes via convenience method and tests for property inheritance
2010-11-10 21:10:31 -05:00
Mike Gerwitz
0d5afa8d71
Moved object extend() assertion to its own file to prepare for extending subtypes
2010-11-10 20:48:35 -05:00
Mike Gerwitz
6a14b86777
Minor documentation changes
2010-11-10 20:45:33 -05:00
Mike Gerwitz
9071a158a2
Added tests for constructor arguments
2010-11-10 19:29:56 -05:00
Mike Gerwitz
bebaee7b46
Moved constructor tests into their own file
2010-11-10 19:21:53 -05:00
Mike Gerwitz
94835d290a
Implemented constructor
2010-11-10 19:19:02 -05:00
Mike Gerwitz
1ee270883e
Began implementing constructor (not yet operable - test will fail)
2010-11-10 19:02:52 -05:00
Mike Gerwitz
8d6c2645bc
Began adding Class.extend()
2010-11-10 18:40:36 -05:00
Mike Gerwitz
979331cda3
Initial commit beginning to outline concept
2010-11-10 17:41:12 -05:00