1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
|
This document describes the set of tests we need to build to have complete coverage
of incremental compilation for AspectJ.
Please add additional test descriptions if you uncover basic scenarios that are missing.
-- work-in-progress...
-- Adrian Colyer, 12-05-2006
Types referred to in test specifications:
==========================================
For the test descriptions that follow I assume a set of types with the following
relationships:
"Aspect" is an aspect
"AbstractAspect" is the parent of "ConcreteAspect"
"AspectDelegate" is a type called from within the body of the aspect
"Class" is any class
"SuperClass" is the parent of ....
"SubClass"
"ClassDelegate" is a type called from within Class, SuperClass, SubClass
Simple Changes to Class
=======================
Class is advised by Aspect (both advice + ITD member(s)).
INC-01 Change method signature in Class so that method that was previously unadvised now is. Structure model should
update *all* markers for the Class with the new line numbers, and add new marker (both advised and advised-by)
Expect 1xcompile, 1xincremental weave
INC-02 As above, but change signature so that previously advised member is no longer advised.
INC-03 Change a method that was advised, and remains advised after change - check line no's updated for relationships
INC-04 Implement an additional interface in the Class, so that advice now matches
INC-05 Add interface to Class, causing declare parents to match where it did not previously
INC-06 As above but remove interface
INC-07 Whitespace change in class with declare warning markers
INC-08 Add interface X to Class, so that a declare parents now matches, adding additional interface Y.
Another aspect in the system advises all calls to "foo" on instances of Y. Class has a foo method -
all types that call Class.foo should be rewoven.
Simple Changes to Aspect
========================
Class is advised by Aspect.
INC-11 Whitespace change in an aspect
INC-12 Add method to an aspect
INC-13 Change body of before advice
INC-14 Change pointcut expression
INC-15 Change body of around advice
INC-16 Add new advice to aspect
INC-17 Add new declare parents statement to aspect
INC-18 Change declare parents statement
Hierarchical Class Changes
==========================
INC-20 Add interface to SuperClass such that operations in SubClass now become eligible for advising
INC-21 Add method to SuperClass such that (now overridding) method in SubClass becomes eligible for advising
INC-22 Add method to SuperClass with same signature as one ITD'd on an interface implemented by SubClass
Hierarchical Aspect Changes
===========================
INC-30 Change advice body in abstract aspect
INC-31 Change comment in abstract aspect
Delegate tests
===============
INC-40 Change signature of operation in ClassDelegate, Class should be recompiled and re-woven
INC-41 Change signature of operation in AspectDelegate, aspect should be recompiled and world re-woven
Cflow tests
============
INC-50 A simple cflow is started by a join point in class Start and used in join point matching in Class.
Compile Class, Start, and Aspect. Change Start to remove the join point that starts the cflow.
INC-51 As above, but make a white-space change in Aspect
INC-52 As INC-50, but change Class
INC-53 As 50, but cflow binds a context variable
INC-54 As above, but make a white-space change in Aspect
INC-55 As INC-53, but change Class
|