1
0
Fork 0
Commit Graph

527 Commits (b9ba6388d20eba0615a90f918c525efe1666acea)

Author SHA1 Message Date
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
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