Lines 13-19
Link Here
|
13 |
|
13 |
|
14 |
import java.util.ArrayList; |
14 |
import java.util.ArrayList; |
15 |
import java.util.Arrays; |
15 |
import java.util.Arrays; |
|
|
16 |
import java.util.Collection; |
16 |
import java.util.Iterator; |
17 |
import java.util.Iterator; |
|
|
18 |
import java.util.LinkedList; |
17 |
import java.util.List; |
19 |
import java.util.List; |
18 |
|
20 |
|
19 |
import junit.framework.Assert; |
21 |
import junit.framework.Assert; |
Lines 27-34
Link Here
|
27 |
import org.eclipse.emf.ecore.util.EcoreUtil; |
29 |
import org.eclipse.emf.ecore.util.EcoreUtil; |
28 |
import org.eclipse.gmf.codegen.gmfgen.Attributes; |
30 |
import org.eclipse.gmf.codegen.gmfgen.Attributes; |
29 |
import org.eclipse.gmf.codegen.gmfgen.DefaultSizeAttributes; |
31 |
import org.eclipse.gmf.codegen.gmfgen.DefaultSizeAttributes; |
|
|
32 |
import org.eclipse.gmf.codegen.gmfgen.ElementType; |
30 |
import org.eclipse.gmf.codegen.gmfgen.GMFGenFactory; |
33 |
import org.eclipse.gmf.codegen.gmfgen.GMFGenFactory; |
31 |
import org.eclipse.gmf.codegen.gmfgen.GMFGenPackage; |
34 |
import org.eclipse.gmf.codegen.gmfgen.GMFGenPackage; |
|
|
35 |
import org.eclipse.gmf.codegen.gmfgen.GenCommonBase; |
32 |
import org.eclipse.gmf.codegen.gmfgen.GenCompartment; |
36 |
import org.eclipse.gmf.codegen.gmfgen.GenCompartment; |
33 |
import org.eclipse.gmf.codegen.gmfgen.GenDiagram; |
37 |
import org.eclipse.gmf.codegen.gmfgen.GenDiagram; |
34 |
import org.eclipse.gmf.codegen.gmfgen.GenEditorGenerator; |
38 |
import org.eclipse.gmf.codegen.gmfgen.GenEditorGenerator; |
Lines 248-254
Link Here
|
248 |
super(attribute, valueToSet); |
252 |
super(attribute, valueToSet); |
249 |
} |
253 |
} |
250 |
|
254 |
|
251 |
protected EObject findChangeSubjet(GenEditorGenerator root) { |
255 |
protected EObject findChangeSubject(GenEditorGenerator root) { |
252 |
return root.getDiagram(); |
256 |
return root.getDiagram(); |
253 |
} |
257 |
} |
254 |
} |
258 |
} |
Lines 373-379
Link Here
|
373 |
super(attribute, expectedValue); |
377 |
super(attribute, expectedValue); |
374 |
} |
378 |
} |
375 |
|
379 |
|
376 |
protected final EObject findChangeSubjet(GenEditorGenerator root) { |
380 |
protected final EObject findChangeSubject(GenEditorGenerator root) { |
377 |
return root; |
381 |
return root; |
378 |
} |
382 |
} |
379 |
} |
383 |
} |
Lines 419-425
Link Here
|
419 |
super(attribute, valueToSet); |
423 |
super(attribute, valueToSet); |
420 |
} |
424 |
} |
421 |
|
425 |
|
422 |
protected EObject findChangeSubjet(GenEditorGenerator root) { |
426 |
protected EObject findChangeSubject(GenEditorGenerator root) { |
423 |
return root.getEditor(); |
427 |
return root.getEditor(); |
424 |
} |
428 |
} |
425 |
} |
429 |
} |
Lines 511-516
Link Here
|
511 |
checkUserChange(new DefaultSizeChange()); |
515 |
checkUserChange(new DefaultSizeChange()); |
512 |
} |
516 |
} |
513 |
|
517 |
|
|
|
518 |
public void testReconcileMetamodelType(){ |
519 |
abstract class ElementTypeChange implements UserChange { |
520 |
protected abstract void applyChange(ElementType elementType); |
521 |
protected abstract void assertChange(ElementType elementType); |
522 |
|
523 |
protected Collection collectSubjects(GenEditorGenerator editorGenerator){ |
524 |
LinkedList allWithType = new LinkedList(); |
525 |
GenDiagram diagram = editorGenerator.getDiagram(); |
526 |
allWithType.add(diagram); |
527 |
allWithType.addAll(diagram.getAllChildContainers()); |
528 |
//XXX: we do not know how to match links yet |
529 |
//allWithType.addAll(diagram.getLinks()); |
530 |
return allWithType; |
531 |
} |
532 |
|
533 |
public final void applyChanges(GenEditorGenerator old) { |
534 |
for (Iterator all = collectSubjects(old).iterator(); all.hasNext();){ |
535 |
GenCommonBase next = (GenCommonBase)all.next(); |
536 |
ElementType nextElementType = next.getElementType(); |
537 |
if (nextElementType == null){ |
538 |
continue; |
539 |
} |
540 |
applyChange(nextElementType); |
541 |
} |
542 |
} |
543 |
|
544 |
public final void assertChangesPreserved(GenEditorGenerator current) { |
545 |
for (Iterator all = collectSubjects(current).iterator(); all.hasNext();){ |
546 |
GenCommonBase next = (GenCommonBase)all.next(); |
547 |
ElementType nextElementType = next.getElementType(); |
548 |
if (nextElementType == null){ |
549 |
continue; |
550 |
} |
551 |
assertChange(nextElementType); |
552 |
} |
553 |
} |
554 |
|
555 |
public final ReconcilerConfigBase getReconcilerConfig() { |
556 |
return new GMFGenConfig(); |
557 |
} |
558 |
|
559 |
protected String toString(ElementType elementType) { |
560 |
return String.valueOf(elementType)/* + " for :" + String.valueOf(elementType.getDiagramElement())*/; |
561 |
} |
562 |
|
563 |
} |
564 |
|
565 |
class DisplayNameChange extends ElementTypeChange { |
566 |
private final String myValue; |
567 |
|
568 |
public DisplayNameChange(String value){ |
569 |
myValue = value; |
570 |
} |
571 |
|
572 |
protected void applyChange(ElementType elementType) { |
573 |
elementType.setDisplayName(myValue); |
574 |
} |
575 |
|
576 |
protected void assertChange(ElementType elementType) { |
577 |
assertEquals(toString(elementType), myValue, elementType.getDisplayName()); |
578 |
} |
579 |
} |
580 |
|
581 |
class DefinedExternallyChange extends ElementTypeChange { |
582 |
private boolean myValue; |
583 |
|
584 |
public DefinedExternallyChange(boolean value){ |
585 |
myValue = value; |
586 |
} |
587 |
|
588 |
protected void applyChange(ElementType elementType) { |
589 |
elementType.setDefinedExternally(myValue); |
590 |
} |
591 |
|
592 |
protected void assertChange(ElementType elementType) { |
593 |
assertEquals(toString(elementType), myValue, elementType.isDefinedExternally()); |
594 |
} |
595 |
|
596 |
} |
597 |
|
598 |
checkUserChange(new DisplayNameChange("ABCD")); |
599 |
//XXX: does not work: checkUserChange(new DisplayNameChange("")); |
600 |
checkUserChange(new DefinedExternallyChange(true)); |
601 |
checkUserChange(new DefinedExternallyChange(false)); |
602 |
} |
603 |
|
514 |
private void checkUserChange(UserChange userChange){ |
604 |
private void checkUserChange(UserChange userChange){ |
515 |
GenEditorGenerator old = createCopy(); |
605 |
GenEditorGenerator old = createCopy(); |
516 |
GenEditorGenerator current = createCopy(); |
606 |
GenEditorGenerator current = createCopy(); |
Lines 563-579
Link Here
|
563 |
myValueToSet = valueToSet; |
653 |
myValueToSet = valueToSet; |
564 |
} |
654 |
} |
565 |
|
655 |
|
566 |
protected abstract EObject findChangeSubjet(GenEditorGenerator root); |
656 |
protected abstract EObject findChangeSubject(GenEditorGenerator root); |
567 |
|
657 |
|
568 |
public void applyChanges(GenEditorGenerator old) { |
658 |
public void applyChanges(GenEditorGenerator old) { |
569 |
EObject subject = findChangeSubjet(old); |
659 |
EObject subject = findChangeSubject(old); |
570 |
assertNotNull(subject); |
660 |
assertNotNull(subject); |
571 |
subject.eSet(myAttribute, myValueToSet); |
661 |
subject.eSet(myAttribute, myValueToSet); |
572 |
myExpectedValue = subject.eGet(myAttribute); |
662 |
myExpectedValue = subject.eGet(myAttribute); |
573 |
} |
663 |
} |
574 |
|
664 |
|
575 |
public void assertChangesPreserved(GenEditorGenerator current) { |
665 |
public void assertChangesPreserved(GenEditorGenerator current) { |
576 |
EObject subject = findChangeSubjet(current); |
666 |
EObject subject = findChangeSubject(current); |
577 |
assertNotNull(subject); |
667 |
assertNotNull(subject); |
578 |
assertEquals(myExpectedValue, subject.eGet(myAttribute)); |
668 |
assertEquals(myExpectedValue, subject.eGet(myAttribute)); |
579 |
} |
669 |
} |