From 7050f0c62a864d50b4609ce780d97396cf11b3d1 Mon Sep 17 00:00:00 2001 From: mohaTlg Date: Tue, 22 Sep 2026 16:46:35 +0200 Subject: [PATCH 1/3] Metamodel updated and Tests added --- .../FASTCSSMetamodelGenerator.class.st | 466 +- .../FASTCSSAdjacentSiblingSelector.class.st | 43 +- src/FAST-CSS-Model/FASTCSSArguments.class.st | 43 +- src/FAST-CSS-Model/FASTCSSAtKeyword.class.st | 2 +- src/FAST-CSS-Model/FASTCSSAtRule.class.st | 43 +- .../FASTCSSAttributeName.class.st | 43 +- .../FASTCSSAttributeSelector.class.st | 43 +- .../FASTCSSBinaryExpression.class.st | 43 +- .../FASTCSSBinaryQuery.class.st | 43 +- src/FAST-CSS-Model/FASTCSSBlock.class.st | 43 +- .../FASTCSSCallExpression.class.st | 43 +- .../FASTCSSCharsetStatement.class.st | 34 +- .../FASTCSSChildSelector.class.st | 43 +- src/FAST-CSS-Model/FASTCSSClassName.class.st | 43 +- .../FASTCSSClassSelector.class.st | 43 +- src/FAST-CSS-Model/FASTCSSColorValue.class.st | 2 +- src/FAST-CSS-Model/FASTCSSComment.class.st | 2 +- .../FASTCSSDeclaration.class.st | 43 +- .../FASTCSSDescendantSelector.class.st | 43 +- src/FAST-CSS-Model/FASTCSSERROR.class.st | 2 +- src/FAST-CSS-Model/FASTCSSEntity.class.st | 856 +- .../FASTCSSEscapeSequence.class.st | 2 +- .../FASTCSSFeatureName.class.st | 2 +- .../FASTCSSFeatureQuery.class.st | 43 +- src/FAST-CSS-Model/FASTCSSFloatValue.class.st | 34 +- src/FAST-CSS-Model/FASTCSSFrom.class.st | 2 +- .../FASTCSSFunctionName.class.st | 2 +- src/FAST-CSS-Model/FASTCSSGridValue.class.st | 43 +- src/FAST-CSS-Model/FASTCSSIdName.class.st | 2 +- src/FAST-CSS-Model/FASTCSSIdSelector.class.st | 43 +- src/FAST-CSS-Model/FASTCSSIdentifier.class.st | 2 +- .../FASTCSSImportStatement.class.st | 43 +- src/FAST-CSS-Model/FASTCSSImportant.class.st | 2 +- .../FASTCSSImportantValue.class.st | 2 +- .../FASTCSSIntegerValue.class.st | 34 +- src/FAST-CSS-Model/FASTCSSJsComment.class.st | 2 +- .../FASTCSSKeyframeBlock.class.st | 43 +- .../FASTCSSKeyframeBlockList.class.st | 43 +- .../FASTCSSKeyframesName.class.st | 2 +- .../FASTCSSKeyframesStatement.class.st | 43 +- .../FASTCSSKeywordQuery.class.st | 2 +- .../FASTCSSMediaStatement.class.st | 43 +- src/FAST-CSS-Model/FASTCSSModel.class.st | 6 +- .../FASTCSSNamespaceName.class.st | 2 +- .../FASTCSSNamespaceSelector.class.st | 43 +- .../FASTCSSNamespaceStatement.class.st | 43 +- .../FASTCSSNestingSelector.class.st | 2 +- .../FASTCSSParenthesizedQuery.class.st | 34 +- .../FASTCSSParenthesizedValue.class.st | 34 +- src/FAST-CSS-Model/FASTCSSPlainValue.class.st | 2 +- .../FASTCSSPostcssStatement.class.st | 43 +- .../FASTCSSPropertyName.class.st | 2 +- .../FASTCSSPseudoClassSelector.class.st | 43 +- .../FASTCSSPseudoElementSelector.class.st | 43 +- src/FAST-CSS-Model/FASTCSSRuleSet.class.st | 43 +- .../FASTCSSScopeStatement.class.st | 43 +- .../FASTCSSSelectorQuery.class.st | 34 +- src/FAST-CSS-Model/FASTCSSSelectors.class.st | 43 +- .../FASTCSSSiblingSelector.class.st | 43 +- .../FASTCSSStringContent.class.st | 2 +- .../FASTCSSStringValue.class.st | 43 +- src/FAST-CSS-Model/FASTCSSStylesheet.class.st | 36 +- .../FASTCSSSupportsStatement.class.st | 43 +- .../FASTCSSTEntityCreator.trait.st | 67 +- src/FAST-CSS-Model/FASTCSSTagName.class.st | 2 +- src/FAST-CSS-Model/FASTCSSTo.class.st | 2 +- src/FAST-CSS-Model/FASTCSSUnaryQuery.class.st | 34 +- src/FAST-CSS-Model/FASTCSSUnit.class.st | 2 +- .../FASTCSSUniversalSelector.class.st | 2 +- .../FASTCSSImporterTest.class.st | 8276 +++++++++++++++++ src/FAST-CSS-TestsGenerated/package.st | 1 + src/FAST-CSS-Tools/FASTCSSImporter.class.st | 12 + 72 files changed, 11210 insertions(+), 215 deletions(-) create mode 100644 src/FAST-CSS-TestsGenerated/FASTCSSImporterTest.class.st create mode 100644 src/FAST-CSS-TestsGenerated/package.st create mode 100644 src/FAST-CSS-Tools/FASTCSSImporter.class.st diff --git a/src/FAST-CSS-Model-Generator/FASTCSSMetamodelGenerator.class.st b/src/FAST-CSS-Model-Generator/FASTCSSMetamodelGenerator.class.st index bc19be8..c0e6d05 100644 --- a/src/FAST-CSS-Model-Generator/FASTCSSMetamodelGenerator.class.st +++ b/src/FAST-CSS-Model-Generator/FASTCSSMetamodelGenerator.class.st @@ -2,73 +2,73 @@ Class { #name : 'FASTCSSMetamodelGenerator', #superclass : 'FamixMetamodelGenerator', #instVars : [ - 'binaryQuery', - 'stylesheet', - 'namespaceStatement', - 'selectors', - 'featureName', - 'namespaceSelector', - 'plainValue', - 'importStatement', - 'unaryQuery', - 'functionName', - 'escapeSequence', - 'className', - 'binaryExpression', - 'keywordQuery', + 'entity', + '_ERROR', + 'tEntity', 'adjacentSiblingSelector', + 'arguments', + 'atKeyword', + 'atRule', 'attributeName', - 'siblingSelector', - 'mediaStatement', - 'supportsStatement', - 'postcssStatement', - 'pseudoClassSelector', + 'attributeSelector', + 'binaryExpression', + 'binaryQuery', 'block', - 'namespaceName', - '_ERROR', - 'to', - 'keyframesName', - 'propertyName', - 'parenthesizedValue', - 'descendantSelector', - 'identifier', - 'declaration', - 'stringContent', - 'gridValue', + 'callExpression', + 'charsetStatement', 'childSelector', - 'integerValue', - 'importantValue', - 'keyframesStatement', - 'keyframeBlockList', + 'className', 'classSelector', - 'nestingSelector', + 'colorValue', + 'comment', + 'declaration', + 'descendantSelector', + 'escapeSequence', + 'featureName', 'featureQuery', - 'parenthesizedQuery', 'floatValue', - 'entity', 'from', - 'unit', - 'stringValue', - 'pseudoElementSelector', + 'functionName', + 'gridValue', + 'idName', + 'idSelector', + 'identifier', + 'importStatement', 'important', + 'importantValue', + 'integerValue', 'jsComment', - 'colorValue', - 'callExpression', - 'ruleSet', - 'charsetStatement', - 'atRule', - 'tagName', - 'comment', - 'arguments', 'keyframeBlock', - 'atKeyword', - 'universalSelector', - 'idSelector', + 'keyframeBlockList', + 'keyframesName', + 'keyframesStatement', + 'keywordQuery', + 'mediaStatement', + 'namespaceName', + 'namespaceSelector', + 'namespaceStatement', + 'nestingSelector', + 'parenthesizedQuery', + 'parenthesizedValue', + 'plainValue', + 'postcssStatement', + 'propertyName', + 'pseudoClassSelector', + 'pseudoElementSelector', + 'ruleSet', 'scopeStatement', - 'attributeSelector', 'selectorQuery', - 'idName', - 'tEntity' + 'selectors', + 'siblingSelector', + 'stringContent', + 'stringValue', + 'stylesheet', + 'supportsStatement', + 'tagName', + 'to', + 'unaryQuery', + 'unit', + 'universalSelector' ], #category : 'FAST-CSS-Model-Generator', #package : 'FAST-CSS-Model-Generator' @@ -94,102 +94,306 @@ FASTCSSMetamodelGenerator class >> submetamodels [ { #category : 'definition' } FASTCSSMetamodelGenerator >> defineClasses [ - binaryQuery := builder ensureClassNamed: #BinaryQuery. - stylesheet := builder ensureClassNamed: #Stylesheet. - namespaceStatement := builder ensureClassNamed: #NamespaceStatement. - selectors := builder ensureClassNamed: #Selectors. - featureName := builder ensureClassNamed: #FeatureName. - namespaceSelector := builder ensureClassNamed: #NamespaceSelector. - plainValue := builder ensureClassNamed: #PlainValue. - importStatement := builder ensureClassNamed: #ImportStatement. - unaryQuery := builder ensureClassNamed: #UnaryQuery. - functionName := builder ensureClassNamed: #FunctionName. - escapeSequence := builder ensureClassNamed: #EscapeSequence. - className := builder ensureClassNamed: #ClassName. - binaryExpression := builder ensureClassNamed: #BinaryExpression. - keywordQuery := builder ensureClassNamed: #KeywordQuery. - adjacentSiblingSelector := builder ensureClassNamed: #AdjacentSiblingSelector. - attributeName := builder ensureClassNamed: #AttributeName. - siblingSelector := builder ensureClassNamed: #SiblingSelector. - mediaStatement := builder ensureClassNamed: #MediaStatement. - supportsStatement := builder ensureClassNamed: #SupportsStatement. - postcssStatement := builder ensureClassNamed: #PostcssStatement. - pseudoClassSelector := builder ensureClassNamed: #PseudoClassSelector. - block := builder ensureClassNamed: #Block. - namespaceName := builder ensureClassNamed: #NamespaceName. - _ERROR := builder ensureClassNamed: #ERROR. - to := builder ensureClassNamed: #To. - keyframesName := builder ensureClassNamed: #KeyframesName. - propertyName := builder ensureClassNamed: #PropertyName. - parenthesizedValue := builder ensureClassNamed: #ParenthesizedValue. - descendantSelector := builder ensureClassNamed: #DescendantSelector. - identifier := builder ensureClassNamed: #Identifier. - declaration := builder ensureClassNamed: #Declaration. - stringContent := builder ensureClassNamed: #StringContent. - gridValue := builder ensureClassNamed: #GridValue. - childSelector := builder ensureClassNamed: #ChildSelector. - integerValue := builder ensureClassNamed: #IntegerValue. - importantValue := builder ensureClassNamed: #ImportantValue. - keyframesStatement := builder ensureClassNamed: #KeyframesStatement. - keyframeBlockList := builder ensureClassNamed: #KeyframeBlockList. - classSelector := builder ensureClassNamed: #ClassSelector. - nestingSelector := builder ensureClassNamed: #NestingSelector. - featureQuery := builder ensureClassNamed: #FeatureQuery. - parenthesizedQuery := builder ensureClassNamed: #ParenthesizedQuery. - floatValue := builder ensureClassNamed: #FloatValue. - entity := builder ensureClassNamed: #Entity. - from := builder ensureClassNamed: #From. - unit := builder ensureClassNamed: #Unit. - stringValue := builder ensureClassNamed: #StringValue. - pseudoElementSelector := builder ensureClassNamed: #PseudoElementSelector. - important := builder ensureClassNamed: #Important. - jsComment := builder ensureClassNamed: #JsComment. - colorValue := builder ensureClassNamed: #ColorValue. - callExpression := builder ensureClassNamed: #CallExpression. - ruleSet := builder ensureClassNamed: #RuleSet. - charsetStatement := builder ensureClassNamed: #CharsetStatement. - atRule := builder ensureClassNamed: #AtRule. - tagName := builder ensureClassNamed: #TagName. - comment := builder ensureClassNamed: #Comment. - arguments := builder ensureClassNamed: #Arguments. - keyframeBlock := builder ensureClassNamed: #KeyframeBlock. - atKeyword := builder ensureClassNamed: #AtKeyword. - universalSelector := builder ensureClassNamed: #UniversalSelector. - idSelector := builder ensureClassNamed: #IdSelector. - scopeStatement := builder ensureClassNamed: #ScopeStatement. - attributeSelector := builder ensureClassNamed: #AttributeSelector. - selectorQuery := builder ensureClassNamed: #SelectorQuery. - idName := builder ensureClassNamed: #IdName. + super defineClasses. + entity := builder newClassNamed: #Entity. + _ERROR := builder newClassNamed: #ERROR. + adjacentSiblingSelector := builder newClassNamed: #AdjacentSiblingSelector. + arguments := builder newClassNamed: #Arguments. + atKeyword := builder newClassNamed: #AtKeyword. + atRule := builder newClassNamed: #AtRule. + attributeName := builder newClassNamed: #AttributeName. + attributeSelector := builder newClassNamed: #AttributeSelector. + binaryExpression := builder newClassNamed: #BinaryExpression. + binaryQuery := builder newClassNamed: #BinaryQuery. + block := builder newClassNamed: #Block. + callExpression := builder newClassNamed: #CallExpression. + charsetStatement := builder newClassNamed: #CharsetStatement. + childSelector := builder newClassNamed: #ChildSelector. + className := builder newClassNamed: #ClassName. + classSelector := builder newClassNamed: #ClassSelector. + colorValue := builder newClassNamed: #ColorValue. + comment := builder newClassNamed: #Comment. + declaration := builder newClassNamed: #Declaration. + descendantSelector := builder newClassNamed: #DescendantSelector. + escapeSequence := builder newClassNamed: #EscapeSequence. + featureName := builder newClassNamed: #FeatureName. + featureQuery := builder newClassNamed: #FeatureQuery. + floatValue := builder newClassNamed: #FloatValue. + from := builder newClassNamed: #From. + functionName := builder newClassNamed: #FunctionName. + gridValue := builder newClassNamed: #GridValue. + idName := builder newClassNamed: #IdName. + idSelector := builder newClassNamed: #IdSelector. + identifier := builder newClassNamed: #Identifier. + importStatement := builder newClassNamed: #ImportStatement. + important := builder newClassNamed: #Important. + importantValue := builder newClassNamed: #ImportantValue. + integerValue := builder newClassNamed: #IntegerValue. + jsComment := builder newClassNamed: #JsComment. + keyframeBlock := builder newClassNamed: #KeyframeBlock. + keyframeBlockList := builder newClassNamed: #KeyframeBlockList. + keyframesName := builder newClassNamed: #KeyframesName. + keyframesStatement := builder newClassNamed: #KeyframesStatement. + keywordQuery := builder newClassNamed: #KeywordQuery. + mediaStatement := builder newClassNamed: #MediaStatement. + namespaceName := builder newClassNamed: #NamespaceName. + namespaceSelector := builder newClassNamed: #NamespaceSelector. + namespaceStatement := builder newClassNamed: #NamespaceStatement. + nestingSelector := builder newClassNamed: #NestingSelector. + parenthesizedQuery := builder newClassNamed: #ParenthesizedQuery. + parenthesizedValue := builder newClassNamed: #ParenthesizedValue. + plainValue := builder newClassNamed: #PlainValue. + postcssStatement := builder newClassNamed: #PostcssStatement. + propertyName := builder newClassNamed: #PropertyName. + pseudoClassSelector := builder newClassNamed: #PseudoClassSelector. + pseudoElementSelector := builder newClassNamed: #PseudoElementSelector. + ruleSet := builder newClassNamed: #RuleSet. + scopeStatement := builder newClassNamed: #ScopeStatement. + selectorQuery := builder newClassNamed: #SelectorQuery. + selectors := builder newClassNamed: #Selectors. + siblingSelector := builder newClassNamed: #SiblingSelector. + stringContent := builder newClassNamed: #StringContent. + stringValue := builder newClassNamed: #StringValue. + stylesheet := builder newClassNamed: #Stylesheet. + supportsStatement := builder newClassNamed: #SupportsStatement. + tagName := builder newClassNamed: #TagName. + to := builder newClassNamed: #To. + unaryQuery := builder newClassNamed: #UnaryQuery. + unit := builder newClassNamed: #Unit. + universalSelector := builder newClassNamed: #UniversalSelector. ] { #category : 'definition' } FASTCSSMetamodelGenerator >> defineHierarchy [ "define class hierarchy" - super defineHierarchy. - entity --|> tEntity. - - stylesheet --|> #THasImmediateSource. - "stylesheet withPrecedenceOf: #THasImmediateSource." - + entity --|> #TEntityMetaLevelDependency. + _ERROR --|> #THasImmediateSource. - "_ERROR withPrecedenceOf: #THasImmediateSource." + + stylesheet --|> #THasImmediateSource. + + ] { #category : 'definition' } FASTCSSMetamodelGenerator >> defineRelations [ - super defineRelations. + (entity property: #'genericChildren') <>-* (entity property: #'genericParent'). + + + " ADJACENT_SIBLING_SELECTOR (COLLECTION) " + ((adjacentSiblingSelector property: #childrenNodes) comment: '') + <>-* ((entity property: #adjacentSiblingSelectorOwner) comment: ''). + + + " ARGUMENTS (COLLECTION) " + ((arguments property: #childrenNodes) comment: '') + <>-* ((entity property: #argumentsOwner) comment: ''). + + + " AT_RULE (COLLECTION) " + ((atRule property: #childrenNodes) comment: '') + <>-* ((entity property: #atRuleOwner) comment: ''). + + + " ATTRIBUTE_NAME (COLLECTION) " + ((attributeName property: #childrenNodes) comment: '') + <>-* ((entity property: #attributeNameOwner) comment: ''). + + + " ATTRIBUTE_SELECTOR (COLLECTION) " + ((attributeSelector property: #childrenNodes) comment: '') + <>-* ((entity property: #attributeSelectorOwner) comment: ''). + + + " BINARY_EXPRESSION (COLLECTION) " + ((binaryExpression property: #childrenNodes) comment: '') + <>-* ((entity property: #binaryExpressionOwner) comment: ''). + + + " BINARY_QUERY (COLLECTION) " + ((binaryQuery property: #childrenNodes) comment: '') + <>-* ((entity property: #binaryQueryOwner) comment: ''). + + + " BLOCK (COLLECTION) " + ((block property: #childrenNodes) comment: '') + <>-* ((entity property: #blockOwner) comment: ''). + + + " CALL_EXPRESSION (COLLECTION) " + ((callExpression property: #childrenNodes) comment: '') + <>-* ((entity property: #callExpressionOwner) comment: ''). + + + " CHARSET_STATEMENT (SINGLE CHILD) " + ((charsetStatement property: #childrenNode) comment: '') + <>- ((entity property: #charsetStatementOwner) comment: ''). + + + " CHILD_SELECTOR (COLLECTION) " + ((childSelector property: #childrenNodes) comment: '') + <>-* ((entity property: #childSelectorOwner) comment: ''). + + + " CLASS_NAME (COLLECTION) " + ((className property: #childrenNodes) comment: '') + <>-* ((entity property: #classNameOwner) comment: ''). + + + " CLASS_SELECTOR (COLLECTION) " + ((classSelector property: #childrenNodes) comment: '') + <>-* ((entity property: #classSelectorOwner) comment: ''). + + + " DECLARATION (COLLECTION) " + ((declaration property: #childrenNodes) comment: '') + <>-* ((entity property: #declarationOwner) comment: ''). + + + " DESCENDANT_SELECTOR (COLLECTION) " + ((descendantSelector property: #childrenNodes) comment: '') + <>-* ((entity property: #descendantSelectorOwner) comment: ''). + + + " FEATURE_QUERY (COLLECTION) " + ((featureQuery property: #childrenNodes) comment: '') + <>-* ((entity property: #featureQueryOwner) comment: ''). + + + " FLOAT_VALUE (SINGLE CHILD) " + ((floatValue property: #childrenNode) comment: '') + <>- ((entity property: #floatValueOwner) comment: ''). + + + " GRID_VALUE (COLLECTION) " + ((gridValue property: #childrenNodes) comment: '') + <>-* ((entity property: #gridValueOwner) comment: ''). + + + " ID_SELECTOR (COLLECTION) " + ((idSelector property: #childrenNodes) comment: '') + <>-* ((entity property: #idSelectorOwner) comment: ''). + + + " IMPORT_STATEMENT (COLLECTION) " + ((importStatement property: #childrenNodes) comment: '') + <>-* ((entity property: #importStatementOwner) comment: ''). + + + " INTEGER_VALUE (SINGLE CHILD) " + ((integerValue property: #childrenNode) comment: '') + <>- ((entity property: #integerValueOwner) comment: ''). + + + " KEYFRAME_BLOCK (COLLECTION) " + ((keyframeBlock property: #childrenNodes) comment: '') + <>-* ((entity property: #keyframeBlockOwner) comment: ''). + + + " KEYFRAME_BLOCK_LIST (COLLECTION) " + ((keyframeBlockList property: #childrenNodes) comment: '') + <>-* ((entity property: #keyframeBlockListOwner) comment: ''). + + + " KEYFRAMES_STATEMENT (COLLECTION) " + ((keyframesStatement property: #childrenNodes) comment: '') + <>-* ((entity property: #keyframesStatementOwner) comment: ''). + + + " MEDIA_STATEMENT (COLLECTION) " + ((mediaStatement property: #childrenNodes) comment: '') + <>-* ((entity property: #mediaStatementOwner) comment: ''). + + + " NAMESPACE_SELECTOR (COLLECTION) " + ((namespaceSelector property: #childrenNodes) comment: '') + <>-* ((entity property: #namespaceSelectorOwner) comment: ''). + + + " NAMESPACE_STATEMENT (COLLECTION) " + ((namespaceStatement property: #childrenNodes) comment: '') + <>-* ((entity property: #namespaceStatementOwner) comment: ''). + + + " PARENTHESIZED_QUERY (SINGLE CHILD) " + ((parenthesizedQuery property: #childrenNode) comment: '') + <>- ((entity property: #parenthesizedQueryOwner) comment: ''). + + + " PARENTHESIZED_VALUE (SINGLE CHILD) " + ((parenthesizedValue property: #childrenNode) comment: '') + <>- ((entity property: #parenthesizedValueOwner) comment: ''). + + + " POSTCSS_STATEMENT (COLLECTION) " + ((postcssStatement property: #childrenNodes) comment: '') + <>-* ((entity property: #postcssStatementOwner) comment: ''). + + + " PSEUDO_CLASS_SELECTOR (COLLECTION) " + ((pseudoClassSelector property: #childrenNodes) comment: '') + <>-* ((entity property: #pseudoClassSelectorOwner) comment: ''). + + + " PSEUDO_ELEMENT_SELECTOR (COLLECTION) " + ((pseudoElementSelector property: #childrenNodes) comment: '') + <>-* ((entity property: #pseudoElementSelectorOwner) comment: ''). + + + " RULE_SET (COLLECTION) " + ((ruleSet property: #childrenNodes) comment: '') + <>-* ((entity property: #ruleSetOwner) comment: ''). + + + " SCOPE_STATEMENT (COLLECTION) " + ((scopeStatement property: #childrenNodes) comment: '') + <>-* ((entity property: #scopeStatementOwner) comment: ''). + + + " SELECTOR_QUERY (SINGLE CHILD) " + ((selectorQuery property: #childrenNode) comment: '') + <>- ((entity property: #selectorQueryOwner) comment: ''). + + + " SELECTORS (COLLECTION) " + ((selectors property: #childrenNodes) comment: '') + <>-* ((entity property: #selectorsOwner) comment: ''). + + + " SIBLING_SELECTOR (COLLECTION) " + ((siblingSelector property: #childrenNodes) comment: '') + <>-* ((entity property: #siblingSelectorOwner) comment: ''). + + + " STRING_VALUE (COLLECTION) " + ((stringValue property: #childrenNodes) comment: '') + <>-* ((entity property: #stringValueOwner) comment: ''). + + + " STYLESHEET (COLLECTION) " + ((stylesheet property: #childrenNodes) comment: '') + <>-* ((entity property: #stylesheetOwner) comment: ''). + + + " SUPPORTS_STATEMENT (COLLECTION) " + ((supportsStatement property: #childrenNodes) comment: '') + <>-* ((entity property: #supportsStatementOwner) comment: ''). + + + " UNARY_QUERY (SINGLE CHILD) " + ((unaryQuery property: #childrenNode) comment: '') + <>- ((entity property: #unaryQueryOwner) comment: ''). + + ] { #category : 'definition' } FASTCSSMetamodelGenerator >> defineTraits [ - super defineTraits. - "From FAST" tEntity := self remoteTrait: #TEntity withPrefix: #FAST. - ] diff --git a/src/FAST-CSS-Model/FASTCSSAdjacentSiblingSelector.class.st b/src/FAST-CSS-Model/FASTCSSAdjacentSiblingSelector.class.st index fd12dc3..bd5fa07 100644 --- a/src/FAST-CSS-Model/FASTCSSAdjacentSiblingSelector.class.st +++ b/src/FAST-CSS-Model/FASTCSSAdjacentSiblingSelector.class.st @@ -1,6 +1,21 @@ +" +## Relations +====================== + +### Children +| Relation | Origin | Opposite | Type | Comment | +|---| +| `childrenNodes` | `FASTCSSAdjacentSiblingSelector` | `adjacentSiblingSelectorOwner` | `FASTCSSEntity` | | + + + +" Class { #name : 'FASTCSSAdjacentSiblingSelector', #superclass : 'FASTCSSEntity', + #instVars : [ + '#childrenNodes => FMMany type: #FASTCSSEntity opposite: #adjacentSiblingSelectorOwner' + ], #category : 'FAST-CSS-Model-Entities', #package : 'FAST-CSS-Model', #tag : 'Entities' @@ -9,8 +24,34 @@ Class { { #category : 'meta' } FASTCSSAdjacentSiblingSelector class >> annotation [ + - ^ self +] + +{ #category : 'adding' } +FASTCSSAdjacentSiblingSelector >> addChildrenNode: anObject [ + + + + ^ self childrenNodes add: anObject +] + +{ #category : 'accessing' } +FASTCSSAdjacentSiblingSelector >> childrenNodes [ + "Relation named: #childrenNodes type: #FASTCSSEntity opposite: #adjacentSiblingSelectorOwner" + + + + + ^ childrenNodes +] + +{ #category : 'accessing' } +FASTCSSAdjacentSiblingSelector >> childrenNodes: anObject [ + + + + childrenNodes value: anObject ] diff --git a/src/FAST-CSS-Model/FASTCSSArguments.class.st b/src/FAST-CSS-Model/FASTCSSArguments.class.st index 9f9e114..ef1107f 100644 --- a/src/FAST-CSS-Model/FASTCSSArguments.class.st +++ b/src/FAST-CSS-Model/FASTCSSArguments.class.st @@ -1,6 +1,21 @@ +" +## Relations +====================== + +### Children +| Relation | Origin | Opposite | Type | Comment | +|---| +| `childrenNodes` | `FASTCSSArguments` | `argumentsOwner` | `FASTCSSEntity` | | + + + +" Class { #name : 'FASTCSSArguments', #superclass : 'FASTCSSEntity', + #instVars : [ + '#childrenNodes => FMMany type: #FASTCSSEntity opposite: #argumentsOwner' + ], #category : 'FAST-CSS-Model-Entities', #package : 'FAST-CSS-Model', #tag : 'Entities' @@ -9,8 +24,34 @@ Class { { #category : 'meta' } FASTCSSArguments class >> annotation [ + - ^ self +] + +{ #category : 'adding' } +FASTCSSArguments >> addChildrenNode: anObject [ + + + + ^ self childrenNodes add: anObject +] + +{ #category : 'accessing' } +FASTCSSArguments >> childrenNodes [ + "Relation named: #childrenNodes type: #FASTCSSEntity opposite: #argumentsOwner" + + + + + ^ childrenNodes +] + +{ #category : 'accessing' } +FASTCSSArguments >> childrenNodes: anObject [ + + + + childrenNodes value: anObject ] diff --git a/src/FAST-CSS-Model/FASTCSSAtKeyword.class.st b/src/FAST-CSS-Model/FASTCSSAtKeyword.class.st index 19b6033..bf71c55 100644 --- a/src/FAST-CSS-Model/FASTCSSAtKeyword.class.st +++ b/src/FAST-CSS-Model/FASTCSSAtKeyword.class.st @@ -9,8 +9,8 @@ Class { { #category : 'meta' } FASTCSSAtKeyword class >> annotation [ + - ^ self ] diff --git a/src/FAST-CSS-Model/FASTCSSAtRule.class.st b/src/FAST-CSS-Model/FASTCSSAtRule.class.st index 249c4ec..75dd03d 100644 --- a/src/FAST-CSS-Model/FASTCSSAtRule.class.st +++ b/src/FAST-CSS-Model/FASTCSSAtRule.class.st @@ -1,6 +1,21 @@ +" +## Relations +====================== + +### Children +| Relation | Origin | Opposite | Type | Comment | +|---| +| `childrenNodes` | `FASTCSSAtRule` | `atRuleOwner` | `FASTCSSEntity` | | + + + +" Class { #name : 'FASTCSSAtRule', #superclass : 'FASTCSSEntity', + #instVars : [ + '#childrenNodes => FMMany type: #FASTCSSEntity opposite: #atRuleOwner' + ], #category : 'FAST-CSS-Model-Entities', #package : 'FAST-CSS-Model', #tag : 'Entities' @@ -9,8 +24,34 @@ Class { { #category : 'meta' } FASTCSSAtRule class >> annotation [ + - ^ self +] + +{ #category : 'adding' } +FASTCSSAtRule >> addChildrenNode: anObject [ + + + + ^ self childrenNodes add: anObject +] + +{ #category : 'accessing' } +FASTCSSAtRule >> childrenNodes [ + "Relation named: #childrenNodes type: #FASTCSSEntity opposite: #atRuleOwner" + + + + + ^ childrenNodes +] + +{ #category : 'accessing' } +FASTCSSAtRule >> childrenNodes: anObject [ + + + + childrenNodes value: anObject ] diff --git a/src/FAST-CSS-Model/FASTCSSAttributeName.class.st b/src/FAST-CSS-Model/FASTCSSAttributeName.class.st index b3474cc..43b00b9 100644 --- a/src/FAST-CSS-Model/FASTCSSAttributeName.class.st +++ b/src/FAST-CSS-Model/FASTCSSAttributeName.class.st @@ -1,6 +1,21 @@ +" +## Relations +====================== + +### Children +| Relation | Origin | Opposite | Type | Comment | +|---| +| `childrenNodes` | `FASTCSSAttributeName` | `attributeNameOwner` | `FASTCSSEntity` | | + + + +" Class { #name : 'FASTCSSAttributeName', #superclass : 'FASTCSSEntity', + #instVars : [ + '#childrenNodes => FMMany type: #FASTCSSEntity opposite: #attributeNameOwner' + ], #category : 'FAST-CSS-Model-Entities', #package : 'FAST-CSS-Model', #tag : 'Entities' @@ -9,8 +24,34 @@ Class { { #category : 'meta' } FASTCSSAttributeName class >> annotation [ + - ^ self +] + +{ #category : 'adding' } +FASTCSSAttributeName >> addChildrenNode: anObject [ + + + + ^ self childrenNodes add: anObject +] + +{ #category : 'accessing' } +FASTCSSAttributeName >> childrenNodes [ + "Relation named: #childrenNodes type: #FASTCSSEntity opposite: #attributeNameOwner" + + + + + ^ childrenNodes +] + +{ #category : 'accessing' } +FASTCSSAttributeName >> childrenNodes: anObject [ + + + + childrenNodes value: anObject ] diff --git a/src/FAST-CSS-Model/FASTCSSAttributeSelector.class.st b/src/FAST-CSS-Model/FASTCSSAttributeSelector.class.st index f5b3b57..981ffcd 100644 --- a/src/FAST-CSS-Model/FASTCSSAttributeSelector.class.st +++ b/src/FAST-CSS-Model/FASTCSSAttributeSelector.class.st @@ -1,6 +1,21 @@ +" +## Relations +====================== + +### Children +| Relation | Origin | Opposite | Type | Comment | +|---| +| `childrenNodes` | `FASTCSSAttributeSelector` | `attributeSelectorOwner` | `FASTCSSEntity` | | + + + +" Class { #name : 'FASTCSSAttributeSelector', #superclass : 'FASTCSSEntity', + #instVars : [ + '#childrenNodes => FMMany type: #FASTCSSEntity opposite: #attributeSelectorOwner' + ], #category : 'FAST-CSS-Model-Entities', #package : 'FAST-CSS-Model', #tag : 'Entities' @@ -9,8 +24,34 @@ Class { { #category : 'meta' } FASTCSSAttributeSelector class >> annotation [ + - ^ self +] + +{ #category : 'adding' } +FASTCSSAttributeSelector >> addChildrenNode: anObject [ + + + + ^ self childrenNodes add: anObject +] + +{ #category : 'accessing' } +FASTCSSAttributeSelector >> childrenNodes [ + "Relation named: #childrenNodes type: #FASTCSSEntity opposite: #attributeSelectorOwner" + + + + + ^ childrenNodes +] + +{ #category : 'accessing' } +FASTCSSAttributeSelector >> childrenNodes: anObject [ + + + + childrenNodes value: anObject ] diff --git a/src/FAST-CSS-Model/FASTCSSBinaryExpression.class.st b/src/FAST-CSS-Model/FASTCSSBinaryExpression.class.st index ef0a89e..c7415da 100644 --- a/src/FAST-CSS-Model/FASTCSSBinaryExpression.class.st +++ b/src/FAST-CSS-Model/FASTCSSBinaryExpression.class.st @@ -1,6 +1,21 @@ +" +## Relations +====================== + +### Children +| Relation | Origin | Opposite | Type | Comment | +|---| +| `childrenNodes` | `FASTCSSBinaryExpression` | `binaryExpressionOwner` | `FASTCSSEntity` | | + + + +" Class { #name : 'FASTCSSBinaryExpression', #superclass : 'FASTCSSEntity', + #instVars : [ + '#childrenNodes => FMMany type: #FASTCSSEntity opposite: #binaryExpressionOwner' + ], #category : 'FAST-CSS-Model-Entities', #package : 'FAST-CSS-Model', #tag : 'Entities' @@ -9,8 +24,34 @@ Class { { #category : 'meta' } FASTCSSBinaryExpression class >> annotation [ + - ^ self +] + +{ #category : 'adding' } +FASTCSSBinaryExpression >> addChildrenNode: anObject [ + + + + ^ self childrenNodes add: anObject +] + +{ #category : 'accessing' } +FASTCSSBinaryExpression >> childrenNodes [ + "Relation named: #childrenNodes type: #FASTCSSEntity opposite: #binaryExpressionOwner" + + + + + ^ childrenNodes +] + +{ #category : 'accessing' } +FASTCSSBinaryExpression >> childrenNodes: anObject [ + + + + childrenNodes value: anObject ] diff --git a/src/FAST-CSS-Model/FASTCSSBinaryQuery.class.st b/src/FAST-CSS-Model/FASTCSSBinaryQuery.class.st index 42307c6..9abd1bf 100644 --- a/src/FAST-CSS-Model/FASTCSSBinaryQuery.class.st +++ b/src/FAST-CSS-Model/FASTCSSBinaryQuery.class.st @@ -1,6 +1,21 @@ +" +## Relations +====================== + +### Children +| Relation | Origin | Opposite | Type | Comment | +|---| +| `childrenNodes` | `FASTCSSBinaryQuery` | `binaryQueryOwner` | `FASTCSSEntity` | | + + + +" Class { #name : 'FASTCSSBinaryQuery', #superclass : 'FASTCSSEntity', + #instVars : [ + '#childrenNodes => FMMany type: #FASTCSSEntity opposite: #binaryQueryOwner' + ], #category : 'FAST-CSS-Model-Entities', #package : 'FAST-CSS-Model', #tag : 'Entities' @@ -9,8 +24,34 @@ Class { { #category : 'meta' } FASTCSSBinaryQuery class >> annotation [ + - ^ self +] + +{ #category : 'adding' } +FASTCSSBinaryQuery >> addChildrenNode: anObject [ + + + + ^ self childrenNodes add: anObject +] + +{ #category : 'accessing' } +FASTCSSBinaryQuery >> childrenNodes [ + "Relation named: #childrenNodes type: #FASTCSSEntity opposite: #binaryQueryOwner" + + + + + ^ childrenNodes +] + +{ #category : 'accessing' } +FASTCSSBinaryQuery >> childrenNodes: anObject [ + + + + childrenNodes value: anObject ] diff --git a/src/FAST-CSS-Model/FASTCSSBlock.class.st b/src/FAST-CSS-Model/FASTCSSBlock.class.st index 6b96f7c..dbaea0e 100644 --- a/src/FAST-CSS-Model/FASTCSSBlock.class.st +++ b/src/FAST-CSS-Model/FASTCSSBlock.class.st @@ -1,6 +1,21 @@ +" +## Relations +====================== + +### Children +| Relation | Origin | Opposite | Type | Comment | +|---| +| `childrenNodes` | `FASTCSSBlock` | `blockOwner` | `FASTCSSEntity` | | + + + +" Class { #name : 'FASTCSSBlock', #superclass : 'FASTCSSEntity', + #instVars : [ + '#childrenNodes => FMMany type: #FASTCSSEntity opposite: #blockOwner' + ], #category : 'FAST-CSS-Model-Entities', #package : 'FAST-CSS-Model', #tag : 'Entities' @@ -9,8 +24,34 @@ Class { { #category : 'meta' } FASTCSSBlock class >> annotation [ + - ^ self +] + +{ #category : 'adding' } +FASTCSSBlock >> addChildrenNode: anObject [ + + + + ^ self childrenNodes add: anObject +] + +{ #category : 'accessing' } +FASTCSSBlock >> childrenNodes [ + "Relation named: #childrenNodes type: #FASTCSSEntity opposite: #blockOwner" + + + + + ^ childrenNodes +] + +{ #category : 'accessing' } +FASTCSSBlock >> childrenNodes: anObject [ + + + + childrenNodes value: anObject ] diff --git a/src/FAST-CSS-Model/FASTCSSCallExpression.class.st b/src/FAST-CSS-Model/FASTCSSCallExpression.class.st index 5f7008b..eae56a9 100644 --- a/src/FAST-CSS-Model/FASTCSSCallExpression.class.st +++ b/src/FAST-CSS-Model/FASTCSSCallExpression.class.st @@ -1,6 +1,21 @@ +" +## Relations +====================== + +### Children +| Relation | Origin | Opposite | Type | Comment | +|---| +| `childrenNodes` | `FASTCSSCallExpression` | `callExpressionOwner` | `FASTCSSEntity` | | + + + +" Class { #name : 'FASTCSSCallExpression', #superclass : 'FASTCSSEntity', + #instVars : [ + '#childrenNodes => FMMany type: #FASTCSSEntity opposite: #callExpressionOwner' + ], #category : 'FAST-CSS-Model-Entities', #package : 'FAST-CSS-Model', #tag : 'Entities' @@ -9,8 +24,34 @@ Class { { #category : 'meta' } FASTCSSCallExpression class >> annotation [ + - ^ self +] + +{ #category : 'adding' } +FASTCSSCallExpression >> addChildrenNode: anObject [ + + + + ^ self childrenNodes add: anObject +] + +{ #category : 'accessing' } +FASTCSSCallExpression >> childrenNodes [ + "Relation named: #childrenNodes type: #FASTCSSEntity opposite: #callExpressionOwner" + + + + + ^ childrenNodes +] + +{ #category : 'accessing' } +FASTCSSCallExpression >> childrenNodes: anObject [ + + + + childrenNodes value: anObject ] diff --git a/src/FAST-CSS-Model/FASTCSSCharsetStatement.class.st b/src/FAST-CSS-Model/FASTCSSCharsetStatement.class.st index f617622..24ad74a 100644 --- a/src/FAST-CSS-Model/FASTCSSCharsetStatement.class.st +++ b/src/FAST-CSS-Model/FASTCSSCharsetStatement.class.st @@ -1,6 +1,21 @@ +" +## Relations +====================== + +### Children +| Relation | Origin | Opposite | Type | Comment | +|---| +| `childrenNode` | `FASTCSSCharsetStatement` | `charsetStatementOwner` | `FASTCSSEntity` | | + + + +" Class { #name : 'FASTCSSCharsetStatement', #superclass : 'FASTCSSEntity', + #instVars : [ + '#childrenNode => FMOne type: #FASTCSSEntity opposite: #charsetStatementOwner' + ], #category : 'FAST-CSS-Model-Entities', #package : 'FAST-CSS-Model', #tag : 'Entities' @@ -9,8 +24,25 @@ Class { { #category : 'meta' } FASTCSSCharsetStatement class >> annotation [ + - ^ self +] + +{ #category : 'accessing' } +FASTCSSCharsetStatement >> childrenNode [ + "Relation named: #childrenNode type: #FASTCSSEntity opposite: #charsetStatementOwner" + + + + ^ childrenNode +] + +{ #category : 'accessing' } +FASTCSSCharsetStatement >> childrenNode: anObject [ + + + + childrenNode := anObject ] diff --git a/src/FAST-CSS-Model/FASTCSSChildSelector.class.st b/src/FAST-CSS-Model/FASTCSSChildSelector.class.st index 1060779..5acbcba 100644 --- a/src/FAST-CSS-Model/FASTCSSChildSelector.class.st +++ b/src/FAST-CSS-Model/FASTCSSChildSelector.class.st @@ -1,6 +1,21 @@ +" +## Relations +====================== + +### Children +| Relation | Origin | Opposite | Type | Comment | +|---| +| `childrenNodes` | `FASTCSSChildSelector` | `childSelectorOwner` | `FASTCSSEntity` | | + + + +" Class { #name : 'FASTCSSChildSelector', #superclass : 'FASTCSSEntity', + #instVars : [ + '#childrenNodes => FMMany type: #FASTCSSEntity opposite: #childSelectorOwner' + ], #category : 'FAST-CSS-Model-Entities', #package : 'FAST-CSS-Model', #tag : 'Entities' @@ -9,8 +24,34 @@ Class { { #category : 'meta' } FASTCSSChildSelector class >> annotation [ + - ^ self +] + +{ #category : 'adding' } +FASTCSSChildSelector >> addChildrenNode: anObject [ + + + + ^ self childrenNodes add: anObject +] + +{ #category : 'accessing' } +FASTCSSChildSelector >> childrenNodes [ + "Relation named: #childrenNodes type: #FASTCSSEntity opposite: #childSelectorOwner" + + + + + ^ childrenNodes +] + +{ #category : 'accessing' } +FASTCSSChildSelector >> childrenNodes: anObject [ + + + + childrenNodes value: anObject ] diff --git a/src/FAST-CSS-Model/FASTCSSClassName.class.st b/src/FAST-CSS-Model/FASTCSSClassName.class.st index 0086e00..0faf5f4 100644 --- a/src/FAST-CSS-Model/FASTCSSClassName.class.st +++ b/src/FAST-CSS-Model/FASTCSSClassName.class.st @@ -1,6 +1,21 @@ +" +## Relations +====================== + +### Children +| Relation | Origin | Opposite | Type | Comment | +|---| +| `childrenNodes` | `FASTCSSClassName` | `classNameOwner` | `FASTCSSEntity` | | + + + +" Class { #name : 'FASTCSSClassName', #superclass : 'FASTCSSEntity', + #instVars : [ + '#childrenNodes => FMMany type: #FASTCSSEntity opposite: #classNameOwner' + ], #category : 'FAST-CSS-Model-Entities', #package : 'FAST-CSS-Model', #tag : 'Entities' @@ -9,8 +24,34 @@ Class { { #category : 'meta' } FASTCSSClassName class >> annotation [ + - ^ self +] + +{ #category : 'adding' } +FASTCSSClassName >> addChildrenNode: anObject [ + + + + ^ self childrenNodes add: anObject +] + +{ #category : 'accessing' } +FASTCSSClassName >> childrenNodes [ + "Relation named: #childrenNodes type: #FASTCSSEntity opposite: #classNameOwner" + + + + + ^ childrenNodes +] + +{ #category : 'accessing' } +FASTCSSClassName >> childrenNodes: anObject [ + + + + childrenNodes value: anObject ] diff --git a/src/FAST-CSS-Model/FASTCSSClassSelector.class.st b/src/FAST-CSS-Model/FASTCSSClassSelector.class.st index 5571772..cf7a7e9 100644 --- a/src/FAST-CSS-Model/FASTCSSClassSelector.class.st +++ b/src/FAST-CSS-Model/FASTCSSClassSelector.class.st @@ -1,6 +1,21 @@ +" +## Relations +====================== + +### Children +| Relation | Origin | Opposite | Type | Comment | +|---| +| `childrenNodes` | `FASTCSSClassSelector` | `classSelectorOwner` | `FASTCSSEntity` | | + + + +" Class { #name : 'FASTCSSClassSelector', #superclass : 'FASTCSSEntity', + #instVars : [ + '#childrenNodes => FMMany type: #FASTCSSEntity opposite: #classSelectorOwner' + ], #category : 'FAST-CSS-Model-Entities', #package : 'FAST-CSS-Model', #tag : 'Entities' @@ -9,8 +24,34 @@ Class { { #category : 'meta' } FASTCSSClassSelector class >> annotation [ + - ^ self +] + +{ #category : 'adding' } +FASTCSSClassSelector >> addChildrenNode: anObject [ + + + + ^ self childrenNodes add: anObject +] + +{ #category : 'accessing' } +FASTCSSClassSelector >> childrenNodes [ + "Relation named: #childrenNodes type: #FASTCSSEntity opposite: #classSelectorOwner" + + + + + ^ childrenNodes +] + +{ #category : 'accessing' } +FASTCSSClassSelector >> childrenNodes: anObject [ + + + + childrenNodes value: anObject ] diff --git a/src/FAST-CSS-Model/FASTCSSColorValue.class.st b/src/FAST-CSS-Model/FASTCSSColorValue.class.st index 3d31ae0..fa7c810 100644 --- a/src/FAST-CSS-Model/FASTCSSColorValue.class.st +++ b/src/FAST-CSS-Model/FASTCSSColorValue.class.st @@ -9,8 +9,8 @@ Class { { #category : 'meta' } FASTCSSColorValue class >> annotation [ + - ^ self ] diff --git a/src/FAST-CSS-Model/FASTCSSComment.class.st b/src/FAST-CSS-Model/FASTCSSComment.class.st index 08c4261..3ede5b7 100644 --- a/src/FAST-CSS-Model/FASTCSSComment.class.st +++ b/src/FAST-CSS-Model/FASTCSSComment.class.st @@ -9,8 +9,8 @@ Class { { #category : 'meta' } FASTCSSComment class >> annotation [ + - ^ self ] diff --git a/src/FAST-CSS-Model/FASTCSSDeclaration.class.st b/src/FAST-CSS-Model/FASTCSSDeclaration.class.st index 5040cf9..c805c30 100644 --- a/src/FAST-CSS-Model/FASTCSSDeclaration.class.st +++ b/src/FAST-CSS-Model/FASTCSSDeclaration.class.st @@ -1,6 +1,21 @@ +" +## Relations +====================== + +### Children +| Relation | Origin | Opposite | Type | Comment | +|---| +| `childrenNodes` | `FASTCSSDeclaration` | `declarationOwner` | `FASTCSSEntity` | | + + + +" Class { #name : 'FASTCSSDeclaration', #superclass : 'FASTCSSEntity', + #instVars : [ + '#childrenNodes => FMMany type: #FASTCSSEntity opposite: #declarationOwner' + ], #category : 'FAST-CSS-Model-Entities', #package : 'FAST-CSS-Model', #tag : 'Entities' @@ -9,8 +24,34 @@ Class { { #category : 'meta' } FASTCSSDeclaration class >> annotation [ + - ^ self +] + +{ #category : 'adding' } +FASTCSSDeclaration >> addChildrenNode: anObject [ + + + + ^ self childrenNodes add: anObject +] + +{ #category : 'accessing' } +FASTCSSDeclaration >> childrenNodes [ + "Relation named: #childrenNodes type: #FASTCSSEntity opposite: #declarationOwner" + + + + + ^ childrenNodes +] + +{ #category : 'accessing' } +FASTCSSDeclaration >> childrenNodes: anObject [ + + + + childrenNodes value: anObject ] diff --git a/src/FAST-CSS-Model/FASTCSSDescendantSelector.class.st b/src/FAST-CSS-Model/FASTCSSDescendantSelector.class.st index 83c71e3..3d19b33 100644 --- a/src/FAST-CSS-Model/FASTCSSDescendantSelector.class.st +++ b/src/FAST-CSS-Model/FASTCSSDescendantSelector.class.st @@ -1,6 +1,21 @@ +" +## Relations +====================== + +### Children +| Relation | Origin | Opposite | Type | Comment | +|---| +| `childrenNodes` | `FASTCSSDescendantSelector` | `descendantSelectorOwner` | `FASTCSSEntity` | | + + + +" Class { #name : 'FASTCSSDescendantSelector', #superclass : 'FASTCSSEntity', + #instVars : [ + '#childrenNodes => FMMany type: #FASTCSSEntity opposite: #descendantSelectorOwner' + ], #category : 'FAST-CSS-Model-Entities', #package : 'FAST-CSS-Model', #tag : 'Entities' @@ -9,8 +24,34 @@ Class { { #category : 'meta' } FASTCSSDescendantSelector class >> annotation [ + - ^ self +] + +{ #category : 'adding' } +FASTCSSDescendantSelector >> addChildrenNode: anObject [ + + + + ^ self childrenNodes add: anObject +] + +{ #category : 'accessing' } +FASTCSSDescendantSelector >> childrenNodes [ + "Relation named: #childrenNodes type: #FASTCSSEntity opposite: #descendantSelectorOwner" + + + + + ^ childrenNodes +] + +{ #category : 'accessing' } +FASTCSSDescendantSelector >> childrenNodes: anObject [ + + + + childrenNodes value: anObject ] diff --git a/src/FAST-CSS-Model/FASTCSSERROR.class.st b/src/FAST-CSS-Model/FASTCSSERROR.class.st index ed76f03..f34194e 100644 --- a/src/FAST-CSS-Model/FASTCSSERROR.class.st +++ b/src/FAST-CSS-Model/FASTCSSERROR.class.st @@ -29,8 +29,8 @@ Class { { #category : 'meta' } FASTCSSERROR class >> annotation [ + - ^ self ] diff --git a/src/FAST-CSS-Model/FASTCSSEntity.class.st b/src/FAST-CSS-Model/FASTCSSEntity.class.st index 12c3c41..454dfa8 100644 --- a/src/FAST-CSS-Model/FASTCSSEntity.class.st +++ b/src/FAST-CSS-Model/FASTCSSEntity.class.st @@ -5,7 +5,48 @@ ### Parents | Relation | Origin | Opposite | Type | Comment | |---| +| `adjacentSiblingSelectorOwner` | `FASTCSSEntity` | `childrenNodes` | `FASTCSSAdjacentSiblingSelector` | | +| `argumentsOwner` | `FASTCSSEntity` | `childrenNodes` | `FASTCSSArguments` | | +| `atRuleOwner` | `FASTCSSEntity` | `childrenNodes` | `FASTCSSAtRule` | | +| `attributeNameOwner` | `FASTCSSEntity` | `childrenNodes` | `FASTCSSAttributeName` | | +| `attributeSelectorOwner` | `FASTCSSEntity` | `childrenNodes` | `FASTCSSAttributeSelector` | | +| `binaryExpressionOwner` | `FASTCSSEntity` | `childrenNodes` | `FASTCSSBinaryExpression` | | +| `binaryQueryOwner` | `FASTCSSEntity` | `childrenNodes` | `FASTCSSBinaryQuery` | | +| `blockOwner` | `FASTCSSEntity` | `childrenNodes` | `FASTCSSBlock` | | +| `callExpressionOwner` | `FASTCSSEntity` | `childrenNodes` | `FASTCSSCallExpression` | | +| `charsetStatementOwner` | `FASTCSSEntity` | `childrenNode` | `FASTCSSCharsetStatement` | | +| `childSelectorOwner` | `FASTCSSEntity` | `childrenNodes` | `FASTCSSChildSelector` | | +| `classNameOwner` | `FASTCSSEntity` | `childrenNodes` | `FASTCSSClassName` | | +| `classSelectorOwner` | `FASTCSSEntity` | `childrenNodes` | `FASTCSSClassSelector` | | +| `declarationOwner` | `FASTCSSEntity` | `childrenNodes` | `FASTCSSDeclaration` | | +| `descendantSelectorOwner` | `FASTCSSEntity` | `childrenNodes` | `FASTCSSDescendantSelector` | | +| `featureQueryOwner` | `FASTCSSEntity` | `childrenNodes` | `FASTCSSFeatureQuery` | | +| `floatValueOwner` | `FASTCSSEntity` | `childrenNode` | `FASTCSSFloatValue` | | | `genericParent` | `FASTCSSEntity` | `genericChildren` | `FASTCSSEntity` | | +| `gridValueOwner` | `FASTCSSEntity` | `childrenNodes` | `FASTCSSGridValue` | | +| `idSelectorOwner` | `FASTCSSEntity` | `childrenNodes` | `FASTCSSIdSelector` | | +| `importStatementOwner` | `FASTCSSEntity` | `childrenNodes` | `FASTCSSImportStatement` | | +| `integerValueOwner` | `FASTCSSEntity` | `childrenNode` | `FASTCSSIntegerValue` | | +| `keyframeBlockListOwner` | `FASTCSSEntity` | `childrenNodes` | `FASTCSSKeyframeBlockList` | | +| `keyframeBlockOwner` | `FASTCSSEntity` | `childrenNodes` | `FASTCSSKeyframeBlock` | | +| `keyframesStatementOwner` | `FASTCSSEntity` | `childrenNodes` | `FASTCSSKeyframesStatement` | | +| `mediaStatementOwner` | `FASTCSSEntity` | `childrenNodes` | `FASTCSSMediaStatement` | | +| `namespaceSelectorOwner` | `FASTCSSEntity` | `childrenNodes` | `FASTCSSNamespaceSelector` | | +| `namespaceStatementOwner` | `FASTCSSEntity` | `childrenNodes` | `FASTCSSNamespaceStatement` | | +| `parenthesizedQueryOwner` | `FASTCSSEntity` | `childrenNode` | `FASTCSSParenthesizedQuery` | | +| `parenthesizedValueOwner` | `FASTCSSEntity` | `childrenNode` | `FASTCSSParenthesizedValue` | | +| `postcssStatementOwner` | `FASTCSSEntity` | `childrenNodes` | `FASTCSSPostcssStatement` | | +| `pseudoClassSelectorOwner` | `FASTCSSEntity` | `childrenNodes` | `FASTCSSPseudoClassSelector` | | +| `pseudoElementSelectorOwner` | `FASTCSSEntity` | `childrenNodes` | `FASTCSSPseudoElementSelector` | | +| `ruleSetOwner` | `FASTCSSEntity` | `childrenNodes` | `FASTCSSRuleSet` | | +| `scopeStatementOwner` | `FASTCSSEntity` | `childrenNodes` | `FASTCSSScopeStatement` | | +| `selectorQueryOwner` | `FASTCSSEntity` | `childrenNode` | `FASTCSSSelectorQuery` | | +| `selectorsOwner` | `FASTCSSEntity` | `childrenNodes` | `FASTCSSSelectors` | | +| `siblingSelectorOwner` | `FASTCSSEntity` | `childrenNodes` | `FASTCSSSiblingSelector` | | +| `stringValueOwner` | `FASTCSSEntity` | `childrenNodes` | `FASTCSSStringValue` | | +| `stylesheetOwner` | `FASTCSSEntity` | `childrenNodes` | `FASTCSSStylesheet` | | +| `supportsStatementOwner` | `FASTCSSEntity` | `childrenNodes` | `FASTCSSSupportsStatement` | | +| `unaryQueryOwner` | `FASTCSSEntity` | `childrenNode` | `FASTCSSUnaryQuery` | | ### Children | Relation | Origin | Opposite | Type | Comment | @@ -25,11 +66,52 @@ Class { #name : 'FASTCSSEntity', #superclass : 'MooseEntity', - #traits : 'FASTTEntity', - #classTraits : 'FASTTEntity classTrait', + #traits : 'FASTTEntity + TEntityMetaLevelDependency', + #classTraits : 'FASTTEntity classTrait + TEntityMetaLevelDependency classTrait', #instVars : [ + '#adjacentSiblingSelectorOwner => FMOne type: #FASTCSSAdjacentSiblingSelector opposite: #childrenNodes', + '#argumentsOwner => FMOne type: #FASTCSSArguments opposite: #childrenNodes', + '#atRuleOwner => FMOne type: #FASTCSSAtRule opposite: #childrenNodes', + '#attributeNameOwner => FMOne type: #FASTCSSAttributeName opposite: #childrenNodes', + '#attributeSelectorOwner => FMOne type: #FASTCSSAttributeSelector opposite: #childrenNodes', + '#binaryExpressionOwner => FMOne type: #FASTCSSBinaryExpression opposite: #childrenNodes', + '#binaryQueryOwner => FMOne type: #FASTCSSBinaryQuery opposite: #childrenNodes', + '#blockOwner => FMOne type: #FASTCSSBlock opposite: #childrenNodes', + '#callExpressionOwner => FMOne type: #FASTCSSCallExpression opposite: #childrenNodes', + '#charsetStatementOwner => FMOne type: #FASTCSSCharsetStatement opposite: #childrenNode', + '#childSelectorOwner => FMOne type: #FASTCSSChildSelector opposite: #childrenNodes', + '#classNameOwner => FMOne type: #FASTCSSClassName opposite: #childrenNodes', + '#classSelectorOwner => FMOne type: #FASTCSSClassSelector opposite: #childrenNodes', + '#declarationOwner => FMOne type: #FASTCSSDeclaration opposite: #childrenNodes', + '#descendantSelectorOwner => FMOne type: #FASTCSSDescendantSelector opposite: #childrenNodes', + '#featureQueryOwner => FMOne type: #FASTCSSFeatureQuery opposite: #childrenNodes', + '#floatValueOwner => FMOne type: #FASTCSSFloatValue opposite: #childrenNode', '#genericChildren => FMMany type: #FASTCSSEntity opposite: #genericParent', - '#genericParent => FMOne type: #FASTCSSEntity opposite: #genericChildren' + '#genericParent => FMOne type: #FASTCSSEntity opposite: #genericChildren', + '#gridValueOwner => FMOne type: #FASTCSSGridValue opposite: #childrenNodes', + '#idSelectorOwner => FMOne type: #FASTCSSIdSelector opposite: #childrenNodes', + '#importStatementOwner => FMOne type: #FASTCSSImportStatement opposite: #childrenNodes', + '#integerValueOwner => FMOne type: #FASTCSSIntegerValue opposite: #childrenNode', + '#keyframeBlockListOwner => FMOne type: #FASTCSSKeyframeBlockList opposite: #childrenNodes', + '#keyframeBlockOwner => FMOne type: #FASTCSSKeyframeBlock opposite: #childrenNodes', + '#keyframesStatementOwner => FMOne type: #FASTCSSKeyframesStatement opposite: #childrenNodes', + '#mediaStatementOwner => FMOne type: #FASTCSSMediaStatement opposite: #childrenNodes', + '#namespaceSelectorOwner => FMOne type: #FASTCSSNamespaceSelector opposite: #childrenNodes', + '#namespaceStatementOwner => FMOne type: #FASTCSSNamespaceStatement opposite: #childrenNodes', + '#parenthesizedQueryOwner => FMOne type: #FASTCSSParenthesizedQuery opposite: #childrenNode', + '#parenthesizedValueOwner => FMOne type: #FASTCSSParenthesizedValue opposite: #childrenNode', + '#postcssStatementOwner => FMOne type: #FASTCSSPostcssStatement opposite: #childrenNodes', + '#pseudoClassSelectorOwner => FMOne type: #FASTCSSPseudoClassSelector opposite: #childrenNodes', + '#pseudoElementSelectorOwner => FMOne type: #FASTCSSPseudoElementSelector opposite: #childrenNodes', + '#ruleSetOwner => FMOne type: #FASTCSSRuleSet opposite: #childrenNodes', + '#scopeStatementOwner => FMOne type: #FASTCSSScopeStatement opposite: #childrenNodes', + '#selectorQueryOwner => FMOne type: #FASTCSSSelectorQuery opposite: #childrenNode', + '#selectorsOwner => FMOne type: #FASTCSSSelectors opposite: #childrenNodes', + '#siblingSelectorOwner => FMOne type: #FASTCSSSiblingSelector opposite: #childrenNodes', + '#stringValueOwner => FMOne type: #FASTCSSStringValue opposite: #childrenNodes', + '#stylesheetOwner => FMOne type: #FASTCSSStylesheet opposite: #childrenNodes', + '#supportsStatementOwner => FMOne type: #FASTCSSSupportsStatement opposite: #childrenNodes', + '#unaryQueryOwner => FMOne type: #FASTCSSUnaryQuery opposite: #childrenNode' ], #category : 'FAST-CSS-Model-Entities', #package : 'FAST-CSS-Model', @@ -39,16 +121,17 @@ Class { { #category : 'meta' } FASTCSSEntity class >> annotation [ + - ^ self ] { #category : 'testing' } FASTCSSEntity class >> isAbstract [ + ^ self == FASTCSSEntity ] @@ -56,20 +139,332 @@ FASTCSSEntity class >> isAbstract [ { #category : 'meta' } FASTCSSEntity class >> metamodel [ + ^ FASTCSSModel metamodel ] { #category : 'adding' } -FASTCSSEntity >> addGenericChildren: anObject [ +FASTCSSEntity >> addGenericChild: anObject [ + + ^ self genericChildren add: anObject ] +{ #category : 'accessing' } +FASTCSSEntity >> adjacentSiblingSelectorOwner [ + "Relation named: #adjacentSiblingSelectorOwner type: #FASTCSSAdjacentSiblingSelector opposite: #childrenNodes" + + + + + ^ adjacentSiblingSelectorOwner +] + +{ #category : 'accessing' } +FASTCSSEntity >> adjacentSiblingSelectorOwner: anObject [ + + + + adjacentSiblingSelectorOwner := anObject +] + +{ #category : 'accessing' } +FASTCSSEntity >> argumentsOwner [ + "Relation named: #argumentsOwner type: #FASTCSSArguments opposite: #childrenNodes" + + + + + ^ argumentsOwner +] + +{ #category : 'accessing' } +FASTCSSEntity >> argumentsOwner: anObject [ + + + + argumentsOwner := anObject +] + +{ #category : 'accessing' } +FASTCSSEntity >> atRuleOwner [ + "Relation named: #atRuleOwner type: #FASTCSSAtRule opposite: #childrenNodes" + + + + + ^ atRuleOwner +] + +{ #category : 'accessing' } +FASTCSSEntity >> atRuleOwner: anObject [ + + + + atRuleOwner := anObject +] + +{ #category : 'accessing' } +FASTCSSEntity >> attributeNameOwner [ + "Relation named: #attributeNameOwner type: #FASTCSSAttributeName opposite: #childrenNodes" + + + + + ^ attributeNameOwner +] + +{ #category : 'accessing' } +FASTCSSEntity >> attributeNameOwner: anObject [ + + + + attributeNameOwner := anObject +] + +{ #category : 'accessing' } +FASTCSSEntity >> attributeSelectorOwner [ + "Relation named: #attributeSelectorOwner type: #FASTCSSAttributeSelector opposite: #childrenNodes" + + + + + ^ attributeSelectorOwner +] + +{ #category : 'accessing' } +FASTCSSEntity >> attributeSelectorOwner: anObject [ + + + + attributeSelectorOwner := anObject +] + +{ #category : 'accessing' } +FASTCSSEntity >> binaryExpressionOwner [ + "Relation named: #binaryExpressionOwner type: #FASTCSSBinaryExpression opposite: #childrenNodes" + + + + + ^ binaryExpressionOwner +] + +{ #category : 'accessing' } +FASTCSSEntity >> binaryExpressionOwner: anObject [ + + + + binaryExpressionOwner := anObject +] + +{ #category : 'accessing' } +FASTCSSEntity >> binaryQueryOwner [ + "Relation named: #binaryQueryOwner type: #FASTCSSBinaryQuery opposite: #childrenNodes" + + + + + ^ binaryQueryOwner +] + +{ #category : 'accessing' } +FASTCSSEntity >> binaryQueryOwner: anObject [ + + + + binaryQueryOwner := anObject +] + +{ #category : 'accessing' } +FASTCSSEntity >> blockOwner [ + "Relation named: #blockOwner type: #FASTCSSBlock opposite: #childrenNodes" + + + + + ^ blockOwner +] + +{ #category : 'accessing' } +FASTCSSEntity >> blockOwner: anObject [ + + + + blockOwner := anObject +] + +{ #category : 'accessing' } +FASTCSSEntity >> callExpressionOwner [ + "Relation named: #callExpressionOwner type: #FASTCSSCallExpression opposite: #childrenNodes" + + + + + ^ callExpressionOwner +] + +{ #category : 'accessing' } +FASTCSSEntity >> callExpressionOwner: anObject [ + + + + callExpressionOwner := anObject +] + +{ #category : 'accessing' } +FASTCSSEntity >> charsetStatementOwner [ + "Relation named: #charsetStatementOwner type: #FASTCSSCharsetStatement opposite: #childrenNode" + + + + + + ^ charsetStatementOwner +] + +{ #category : 'accessing' } +FASTCSSEntity >> charsetStatementOwner: anObject [ + + + + charsetStatementOwner := anObject +] + +{ #category : 'accessing' } +FASTCSSEntity >> childSelectorOwner [ + "Relation named: #childSelectorOwner type: #FASTCSSChildSelector opposite: #childrenNodes" + + + + + ^ childSelectorOwner +] + +{ #category : 'accessing' } +FASTCSSEntity >> childSelectorOwner: anObject [ + + + + childSelectorOwner := anObject +] + +{ #category : 'accessing' } +FASTCSSEntity >> classNameOwner [ + "Relation named: #classNameOwner type: #FASTCSSClassName opposite: #childrenNodes" + + + + + ^ classNameOwner +] + +{ #category : 'accessing' } +FASTCSSEntity >> classNameOwner: anObject [ + + + + classNameOwner := anObject +] + +{ #category : 'accessing' } +FASTCSSEntity >> classSelectorOwner [ + "Relation named: #classSelectorOwner type: #FASTCSSClassSelector opposite: #childrenNodes" + + + + + ^ classSelectorOwner +] + +{ #category : 'accessing' } +FASTCSSEntity >> classSelectorOwner: anObject [ + + + + classSelectorOwner := anObject +] + +{ #category : 'accessing' } +FASTCSSEntity >> declarationOwner [ + "Relation named: #declarationOwner type: #FASTCSSDeclaration opposite: #childrenNodes" + + + + + ^ declarationOwner +] + +{ #category : 'accessing' } +FASTCSSEntity >> declarationOwner: anObject [ + + + + declarationOwner := anObject +] + +{ #category : 'accessing' } +FASTCSSEntity >> descendantSelectorOwner [ + "Relation named: #descendantSelectorOwner type: #FASTCSSDescendantSelector opposite: #childrenNodes" + + + + + ^ descendantSelectorOwner +] + +{ #category : 'accessing' } +FASTCSSEntity >> descendantSelectorOwner: anObject [ + + + + descendantSelectorOwner := anObject +] + +{ #category : 'accessing' } +FASTCSSEntity >> featureQueryOwner [ + "Relation named: #featureQueryOwner type: #FASTCSSFeatureQuery opposite: #childrenNodes" + + + + + ^ featureQueryOwner +] + +{ #category : 'accessing' } +FASTCSSEntity >> featureQueryOwner: anObject [ + + + + featureQueryOwner := anObject +] + +{ #category : 'accessing' } +FASTCSSEntity >> floatValueOwner [ + "Relation named: #floatValueOwner type: #FASTCSSFloatValue opposite: #childrenNode" + + + + + + ^ floatValueOwner +] + +{ #category : 'accessing' } +FASTCSSEntity >> floatValueOwner: anObject [ + + + + floatValueOwner := anObject +] + { #category : 'accessing' } FASTCSSEntity >> genericChildren [ "Relation named: #genericChildren type: #FASTCSSEntity opposite: #genericParent" + ^ genericChildren @@ -78,21 +473,16 @@ FASTCSSEntity >> genericChildren [ { #category : 'accessing' } FASTCSSEntity >> genericChildren: anObject [ + genericChildren value: anObject ] -{ #category : 'navigation' } -FASTCSSEntity >> genericChildrenGroup [ - - - ^ MooseSpecializedGroup withAll: self genericChildren asSet -] - { #category : 'accessing' } FASTCSSEntity >> genericParent [ "Relation named: #genericParent type: #FASTCSSEntity opposite: #genericChildren" + ^ genericParent @@ -101,20 +491,452 @@ FASTCSSEntity >> genericParent [ { #category : 'accessing' } FASTCSSEntity >> genericParent: anObject [ + genericParent := anObject ] -{ #category : 'navigation' } -FASTCSSEntity >> genericParentGroup [ +{ #category : 'accessing' } +FASTCSSEntity >> gridValueOwner [ + "Relation named: #gridValueOwner type: #FASTCSSGridValue opposite: #childrenNodes" + + + + + ^ gridValueOwner +] + +{ #category : 'accessing' } +FASTCSSEntity >> gridValueOwner: anObject [ + + - - ^ MooseSpecializedGroup with: self genericParent + gridValueOwner := anObject ] { #category : 'testing' } -FASTCSSEntity >> isQueryable [ +FASTCSSEntity >> hasImmediateSource [ + ^ false ] + +{ #category : 'accessing' } +FASTCSSEntity >> idSelectorOwner [ + "Relation named: #idSelectorOwner type: #FASTCSSIdSelector opposite: #childrenNodes" + + + + + ^ idSelectorOwner +] + +{ #category : 'accessing' } +FASTCSSEntity >> idSelectorOwner: anObject [ + + + + idSelectorOwner := anObject +] + +{ #category : 'accessing' } +FASTCSSEntity >> importStatementOwner [ + "Relation named: #importStatementOwner type: #FASTCSSImportStatement opposite: #childrenNodes" + + + + + ^ importStatementOwner +] + +{ #category : 'accessing' } +FASTCSSEntity >> importStatementOwner: anObject [ + + + + importStatementOwner := anObject +] + +{ #category : 'accessing' } +FASTCSSEntity >> integerValueOwner [ + "Relation named: #integerValueOwner type: #FASTCSSIntegerValue opposite: #childrenNode" + + + + + + ^ integerValueOwner +] + +{ #category : 'accessing' } +FASTCSSEntity >> integerValueOwner: anObject [ + + + + integerValueOwner := anObject +] + +{ #category : 'accessing' } +FASTCSSEntity >> keyframeBlockListOwner [ + "Relation named: #keyframeBlockListOwner type: #FASTCSSKeyframeBlockList opposite: #childrenNodes" + + + + + ^ keyframeBlockListOwner +] + +{ #category : 'accessing' } +FASTCSSEntity >> keyframeBlockListOwner: anObject [ + + + + keyframeBlockListOwner := anObject +] + +{ #category : 'accessing' } +FASTCSSEntity >> keyframeBlockOwner [ + "Relation named: #keyframeBlockOwner type: #FASTCSSKeyframeBlock opposite: #childrenNodes" + + + + + ^ keyframeBlockOwner +] + +{ #category : 'accessing' } +FASTCSSEntity >> keyframeBlockOwner: anObject [ + + + + keyframeBlockOwner := anObject +] + +{ #category : 'accessing' } +FASTCSSEntity >> keyframesStatementOwner [ + "Relation named: #keyframesStatementOwner type: #FASTCSSKeyframesStatement opposite: #childrenNodes" + + + + + ^ keyframesStatementOwner +] + +{ #category : 'accessing' } +FASTCSSEntity >> keyframesStatementOwner: anObject [ + + + + keyframesStatementOwner := anObject +] + +{ #category : 'accessing' } +FASTCSSEntity >> mediaStatementOwner [ + "Relation named: #mediaStatementOwner type: #FASTCSSMediaStatement opposite: #childrenNodes" + + + + + ^ mediaStatementOwner +] + +{ #category : 'accessing' } +FASTCSSEntity >> mediaStatementOwner: anObject [ + + + + mediaStatementOwner := anObject +] + +{ #category : 'accessing' } +FASTCSSEntity >> namespaceSelectorOwner [ + "Relation named: #namespaceSelectorOwner type: #FASTCSSNamespaceSelector opposite: #childrenNodes" + + + + + ^ namespaceSelectorOwner +] + +{ #category : 'accessing' } +FASTCSSEntity >> namespaceSelectorOwner: anObject [ + + + + namespaceSelectorOwner := anObject +] + +{ #category : 'accessing' } +FASTCSSEntity >> namespaceStatementOwner [ + "Relation named: #namespaceStatementOwner type: #FASTCSSNamespaceStatement opposite: #childrenNodes" + + + + + ^ namespaceStatementOwner +] + +{ #category : 'accessing' } +FASTCSSEntity >> namespaceStatementOwner: anObject [ + + + + namespaceStatementOwner := anObject +] + +{ #category : 'accessing' } +FASTCSSEntity >> parenthesizedQueryOwner [ + "Relation named: #parenthesizedQueryOwner type: #FASTCSSParenthesizedQuery opposite: #childrenNode" + + + + + + ^ parenthesizedQueryOwner +] + +{ #category : 'accessing' } +FASTCSSEntity >> parenthesizedQueryOwner: anObject [ + + + + parenthesizedQueryOwner := anObject +] + +{ #category : 'accessing' } +FASTCSSEntity >> parenthesizedValueOwner [ + "Relation named: #parenthesizedValueOwner type: #FASTCSSParenthesizedValue opposite: #childrenNode" + + + + + + ^ parenthesizedValueOwner +] + +{ #category : 'accessing' } +FASTCSSEntity >> parenthesizedValueOwner: anObject [ + + + + parenthesizedValueOwner := anObject +] + +{ #category : 'accessing' } +FASTCSSEntity >> postcssStatementOwner [ + "Relation named: #postcssStatementOwner type: #FASTCSSPostcssStatement opposite: #childrenNodes" + + + + + ^ postcssStatementOwner +] + +{ #category : 'accessing' } +FASTCSSEntity >> postcssStatementOwner: anObject [ + + + + postcssStatementOwner := anObject +] + +{ #category : 'accessing' } +FASTCSSEntity >> pseudoClassSelectorOwner [ + "Relation named: #pseudoClassSelectorOwner type: #FASTCSSPseudoClassSelector opposite: #childrenNodes" + + + + + ^ pseudoClassSelectorOwner +] + +{ #category : 'accessing' } +FASTCSSEntity >> pseudoClassSelectorOwner: anObject [ + + + + pseudoClassSelectorOwner := anObject +] + +{ #category : 'accessing' } +FASTCSSEntity >> pseudoElementSelectorOwner [ + "Relation named: #pseudoElementSelectorOwner type: #FASTCSSPseudoElementSelector opposite: #childrenNodes" + + + + + ^ pseudoElementSelectorOwner +] + +{ #category : 'accessing' } +FASTCSSEntity >> pseudoElementSelectorOwner: anObject [ + + + + pseudoElementSelectorOwner := anObject +] + +{ #category : 'accessing' } +FASTCSSEntity >> ruleSetOwner [ + "Relation named: #ruleSetOwner type: #FASTCSSRuleSet opposite: #childrenNodes" + + + + + ^ ruleSetOwner +] + +{ #category : 'accessing' } +FASTCSSEntity >> ruleSetOwner: anObject [ + + + + ruleSetOwner := anObject +] + +{ #category : 'accessing' } +FASTCSSEntity >> scopeStatementOwner [ + "Relation named: #scopeStatementOwner type: #FASTCSSScopeStatement opposite: #childrenNodes" + + + + + ^ scopeStatementOwner +] + +{ #category : 'accessing' } +FASTCSSEntity >> scopeStatementOwner: anObject [ + + + + scopeStatementOwner := anObject +] + +{ #category : 'accessing' } +FASTCSSEntity >> selectorQueryOwner [ + "Relation named: #selectorQueryOwner type: #FASTCSSSelectorQuery opposite: #childrenNode" + + + + + + ^ selectorQueryOwner +] + +{ #category : 'accessing' } +FASTCSSEntity >> selectorQueryOwner: anObject [ + + + + selectorQueryOwner := anObject +] + +{ #category : 'accessing' } +FASTCSSEntity >> selectorsOwner [ + "Relation named: #selectorsOwner type: #FASTCSSSelectors opposite: #childrenNodes" + + + + + ^ selectorsOwner +] + +{ #category : 'accessing' } +FASTCSSEntity >> selectorsOwner: anObject [ + + + + selectorsOwner := anObject +] + +{ #category : 'accessing' } +FASTCSSEntity >> siblingSelectorOwner [ + "Relation named: #siblingSelectorOwner type: #FASTCSSSiblingSelector opposite: #childrenNodes" + + + + + ^ siblingSelectorOwner +] + +{ #category : 'accessing' } +FASTCSSEntity >> siblingSelectorOwner: anObject [ + + + + siblingSelectorOwner := anObject +] + +{ #category : 'accessing' } +FASTCSSEntity >> stringValueOwner [ + "Relation named: #stringValueOwner type: #FASTCSSStringValue opposite: #childrenNodes" + + + + + ^ stringValueOwner +] + +{ #category : 'accessing' } +FASTCSSEntity >> stringValueOwner: anObject [ + + + + stringValueOwner := anObject +] + +{ #category : 'accessing' } +FASTCSSEntity >> stylesheetOwner [ + "Relation named: #stylesheetOwner type: #FASTCSSStylesheet opposite: #childrenNodes" + + + + + ^ stylesheetOwner +] + +{ #category : 'accessing' } +FASTCSSEntity >> stylesheetOwner: anObject [ + + + + stylesheetOwner := anObject +] + +{ #category : 'accessing' } +FASTCSSEntity >> supportsStatementOwner [ + "Relation named: #supportsStatementOwner type: #FASTCSSSupportsStatement opposite: #childrenNodes" + + + + + ^ supportsStatementOwner +] + +{ #category : 'accessing' } +FASTCSSEntity >> supportsStatementOwner: anObject [ + + + + supportsStatementOwner := anObject +] + +{ #category : 'accessing' } +FASTCSSEntity >> unaryQueryOwner [ + "Relation named: #unaryQueryOwner type: #FASTCSSUnaryQuery opposite: #childrenNode" + + + + + + ^ unaryQueryOwner +] + +{ #category : 'accessing' } +FASTCSSEntity >> unaryQueryOwner: anObject [ + + + + unaryQueryOwner := anObject +] diff --git a/src/FAST-CSS-Model/FASTCSSEscapeSequence.class.st b/src/FAST-CSS-Model/FASTCSSEscapeSequence.class.st index 6e71304..18c49a1 100644 --- a/src/FAST-CSS-Model/FASTCSSEscapeSequence.class.st +++ b/src/FAST-CSS-Model/FASTCSSEscapeSequence.class.st @@ -9,8 +9,8 @@ Class { { #category : 'meta' } FASTCSSEscapeSequence class >> annotation [ + - ^ self ] diff --git a/src/FAST-CSS-Model/FASTCSSFeatureName.class.st b/src/FAST-CSS-Model/FASTCSSFeatureName.class.st index 873a48e..04ba665 100644 --- a/src/FAST-CSS-Model/FASTCSSFeatureName.class.st +++ b/src/FAST-CSS-Model/FASTCSSFeatureName.class.st @@ -9,8 +9,8 @@ Class { { #category : 'meta' } FASTCSSFeatureName class >> annotation [ + - ^ self ] diff --git a/src/FAST-CSS-Model/FASTCSSFeatureQuery.class.st b/src/FAST-CSS-Model/FASTCSSFeatureQuery.class.st index c7970ba..6b0ac8f 100644 --- a/src/FAST-CSS-Model/FASTCSSFeatureQuery.class.st +++ b/src/FAST-CSS-Model/FASTCSSFeatureQuery.class.st @@ -1,6 +1,21 @@ +" +## Relations +====================== + +### Children +| Relation | Origin | Opposite | Type | Comment | +|---| +| `childrenNodes` | `FASTCSSFeatureQuery` | `featureQueryOwner` | `FASTCSSEntity` | | + + + +" Class { #name : 'FASTCSSFeatureQuery', #superclass : 'FASTCSSEntity', + #instVars : [ + '#childrenNodes => FMMany type: #FASTCSSEntity opposite: #featureQueryOwner' + ], #category : 'FAST-CSS-Model-Entities', #package : 'FAST-CSS-Model', #tag : 'Entities' @@ -9,8 +24,34 @@ Class { { #category : 'meta' } FASTCSSFeatureQuery class >> annotation [ + - ^ self +] + +{ #category : 'adding' } +FASTCSSFeatureQuery >> addChildrenNode: anObject [ + + + + ^ self childrenNodes add: anObject +] + +{ #category : 'accessing' } +FASTCSSFeatureQuery >> childrenNodes [ + "Relation named: #childrenNodes type: #FASTCSSEntity opposite: #featureQueryOwner" + + + + + ^ childrenNodes +] + +{ #category : 'accessing' } +FASTCSSFeatureQuery >> childrenNodes: anObject [ + + + + childrenNodes value: anObject ] diff --git a/src/FAST-CSS-Model/FASTCSSFloatValue.class.st b/src/FAST-CSS-Model/FASTCSSFloatValue.class.st index 36d0896..e81a804 100644 --- a/src/FAST-CSS-Model/FASTCSSFloatValue.class.st +++ b/src/FAST-CSS-Model/FASTCSSFloatValue.class.st @@ -1,6 +1,21 @@ +" +## Relations +====================== + +### Children +| Relation | Origin | Opposite | Type | Comment | +|---| +| `childrenNode` | `FASTCSSFloatValue` | `floatValueOwner` | `FASTCSSEntity` | | + + + +" Class { #name : 'FASTCSSFloatValue', #superclass : 'FASTCSSEntity', + #instVars : [ + '#childrenNode => FMOne type: #FASTCSSEntity opposite: #floatValueOwner' + ], #category : 'FAST-CSS-Model-Entities', #package : 'FAST-CSS-Model', #tag : 'Entities' @@ -9,8 +24,25 @@ Class { { #category : 'meta' } FASTCSSFloatValue class >> annotation [ + - ^ self +] + +{ #category : 'accessing' } +FASTCSSFloatValue >> childrenNode [ + "Relation named: #childrenNode type: #FASTCSSEntity opposite: #floatValueOwner" + + + + ^ childrenNode +] + +{ #category : 'accessing' } +FASTCSSFloatValue >> childrenNode: anObject [ + + + + childrenNode := anObject ] diff --git a/src/FAST-CSS-Model/FASTCSSFrom.class.st b/src/FAST-CSS-Model/FASTCSSFrom.class.st index 6cf8336..2895759 100644 --- a/src/FAST-CSS-Model/FASTCSSFrom.class.st +++ b/src/FAST-CSS-Model/FASTCSSFrom.class.st @@ -9,8 +9,8 @@ Class { { #category : 'meta' } FASTCSSFrom class >> annotation [ + - ^ self ] diff --git a/src/FAST-CSS-Model/FASTCSSFunctionName.class.st b/src/FAST-CSS-Model/FASTCSSFunctionName.class.st index aed4702..ee0f3ad 100644 --- a/src/FAST-CSS-Model/FASTCSSFunctionName.class.st +++ b/src/FAST-CSS-Model/FASTCSSFunctionName.class.st @@ -9,8 +9,8 @@ Class { { #category : 'meta' } FASTCSSFunctionName class >> annotation [ + - ^ self ] diff --git a/src/FAST-CSS-Model/FASTCSSGridValue.class.st b/src/FAST-CSS-Model/FASTCSSGridValue.class.st index 30d6289..8aa6753 100644 --- a/src/FAST-CSS-Model/FASTCSSGridValue.class.st +++ b/src/FAST-CSS-Model/FASTCSSGridValue.class.st @@ -1,6 +1,21 @@ +" +## Relations +====================== + +### Children +| Relation | Origin | Opposite | Type | Comment | +|---| +| `childrenNodes` | `FASTCSSGridValue` | `gridValueOwner` | `FASTCSSEntity` | | + + + +" Class { #name : 'FASTCSSGridValue', #superclass : 'FASTCSSEntity', + #instVars : [ + '#childrenNodes => FMMany type: #FASTCSSEntity opposite: #gridValueOwner' + ], #category : 'FAST-CSS-Model-Entities', #package : 'FAST-CSS-Model', #tag : 'Entities' @@ -9,8 +24,34 @@ Class { { #category : 'meta' } FASTCSSGridValue class >> annotation [ + - ^ self +] + +{ #category : 'adding' } +FASTCSSGridValue >> addChildrenNode: anObject [ + + + + ^ self childrenNodes add: anObject +] + +{ #category : 'accessing' } +FASTCSSGridValue >> childrenNodes [ + "Relation named: #childrenNodes type: #FASTCSSEntity opposite: #gridValueOwner" + + + + + ^ childrenNodes +] + +{ #category : 'accessing' } +FASTCSSGridValue >> childrenNodes: anObject [ + + + + childrenNodes value: anObject ] diff --git a/src/FAST-CSS-Model/FASTCSSIdName.class.st b/src/FAST-CSS-Model/FASTCSSIdName.class.st index e30bd21..a58199a 100644 --- a/src/FAST-CSS-Model/FASTCSSIdName.class.st +++ b/src/FAST-CSS-Model/FASTCSSIdName.class.st @@ -9,8 +9,8 @@ Class { { #category : 'meta' } FASTCSSIdName class >> annotation [ + - ^ self ] diff --git a/src/FAST-CSS-Model/FASTCSSIdSelector.class.st b/src/FAST-CSS-Model/FASTCSSIdSelector.class.st index a2a3495..0aaf7a6 100644 --- a/src/FAST-CSS-Model/FASTCSSIdSelector.class.st +++ b/src/FAST-CSS-Model/FASTCSSIdSelector.class.st @@ -1,6 +1,21 @@ +" +## Relations +====================== + +### Children +| Relation | Origin | Opposite | Type | Comment | +|---| +| `childrenNodes` | `FASTCSSIdSelector` | `idSelectorOwner` | `FASTCSSEntity` | | + + + +" Class { #name : 'FASTCSSIdSelector', #superclass : 'FASTCSSEntity', + #instVars : [ + '#childrenNodes => FMMany type: #FASTCSSEntity opposite: #idSelectorOwner' + ], #category : 'FAST-CSS-Model-Entities', #package : 'FAST-CSS-Model', #tag : 'Entities' @@ -9,8 +24,34 @@ Class { { #category : 'meta' } FASTCSSIdSelector class >> annotation [ + - ^ self +] + +{ #category : 'adding' } +FASTCSSIdSelector >> addChildrenNode: anObject [ + + + + ^ self childrenNodes add: anObject +] + +{ #category : 'accessing' } +FASTCSSIdSelector >> childrenNodes [ + "Relation named: #childrenNodes type: #FASTCSSEntity opposite: #idSelectorOwner" + + + + + ^ childrenNodes +] + +{ #category : 'accessing' } +FASTCSSIdSelector >> childrenNodes: anObject [ + + + + childrenNodes value: anObject ] diff --git a/src/FAST-CSS-Model/FASTCSSIdentifier.class.st b/src/FAST-CSS-Model/FASTCSSIdentifier.class.st index 7c4956c..892fd36 100644 --- a/src/FAST-CSS-Model/FASTCSSIdentifier.class.st +++ b/src/FAST-CSS-Model/FASTCSSIdentifier.class.st @@ -9,8 +9,8 @@ Class { { #category : 'meta' } FASTCSSIdentifier class >> annotation [ + - ^ self ] diff --git a/src/FAST-CSS-Model/FASTCSSImportStatement.class.st b/src/FAST-CSS-Model/FASTCSSImportStatement.class.st index 17e9dd9..203aa19 100644 --- a/src/FAST-CSS-Model/FASTCSSImportStatement.class.st +++ b/src/FAST-CSS-Model/FASTCSSImportStatement.class.st @@ -1,6 +1,21 @@ +" +## Relations +====================== + +### Children +| Relation | Origin | Opposite | Type | Comment | +|---| +| `childrenNodes` | `FASTCSSImportStatement` | `importStatementOwner` | `FASTCSSEntity` | | + + + +" Class { #name : 'FASTCSSImportStatement', #superclass : 'FASTCSSEntity', + #instVars : [ + '#childrenNodes => FMMany type: #FASTCSSEntity opposite: #importStatementOwner' + ], #category : 'FAST-CSS-Model-Entities', #package : 'FAST-CSS-Model', #tag : 'Entities' @@ -9,8 +24,34 @@ Class { { #category : 'meta' } FASTCSSImportStatement class >> annotation [ + - ^ self +] + +{ #category : 'adding' } +FASTCSSImportStatement >> addChildrenNode: anObject [ + + + + ^ self childrenNodes add: anObject +] + +{ #category : 'accessing' } +FASTCSSImportStatement >> childrenNodes [ + "Relation named: #childrenNodes type: #FASTCSSEntity opposite: #importStatementOwner" + + + + + ^ childrenNodes +] + +{ #category : 'accessing' } +FASTCSSImportStatement >> childrenNodes: anObject [ + + + + childrenNodes value: anObject ] diff --git a/src/FAST-CSS-Model/FASTCSSImportant.class.st b/src/FAST-CSS-Model/FASTCSSImportant.class.st index 3337dca..5012334 100644 --- a/src/FAST-CSS-Model/FASTCSSImportant.class.st +++ b/src/FAST-CSS-Model/FASTCSSImportant.class.st @@ -9,8 +9,8 @@ Class { { #category : 'meta' } FASTCSSImportant class >> annotation [ + - ^ self ] diff --git a/src/FAST-CSS-Model/FASTCSSImportantValue.class.st b/src/FAST-CSS-Model/FASTCSSImportantValue.class.st index ddbd4e2..e9c7a30 100644 --- a/src/FAST-CSS-Model/FASTCSSImportantValue.class.st +++ b/src/FAST-CSS-Model/FASTCSSImportantValue.class.st @@ -9,8 +9,8 @@ Class { { #category : 'meta' } FASTCSSImportantValue class >> annotation [ + - ^ self ] diff --git a/src/FAST-CSS-Model/FASTCSSIntegerValue.class.st b/src/FAST-CSS-Model/FASTCSSIntegerValue.class.st index 59d0577..71566b3 100644 --- a/src/FAST-CSS-Model/FASTCSSIntegerValue.class.st +++ b/src/FAST-CSS-Model/FASTCSSIntegerValue.class.st @@ -1,6 +1,21 @@ +" +## Relations +====================== + +### Children +| Relation | Origin | Opposite | Type | Comment | +|---| +| `childrenNode` | `FASTCSSIntegerValue` | `integerValueOwner` | `FASTCSSEntity` | | + + + +" Class { #name : 'FASTCSSIntegerValue', #superclass : 'FASTCSSEntity', + #instVars : [ + '#childrenNode => FMOne type: #FASTCSSEntity opposite: #integerValueOwner' + ], #category : 'FAST-CSS-Model-Entities', #package : 'FAST-CSS-Model', #tag : 'Entities' @@ -9,8 +24,25 @@ Class { { #category : 'meta' } FASTCSSIntegerValue class >> annotation [ + - ^ self +] + +{ #category : 'accessing' } +FASTCSSIntegerValue >> childrenNode [ + "Relation named: #childrenNode type: #FASTCSSEntity opposite: #integerValueOwner" + + + + ^ childrenNode +] + +{ #category : 'accessing' } +FASTCSSIntegerValue >> childrenNode: anObject [ + + + + childrenNode := anObject ] diff --git a/src/FAST-CSS-Model/FASTCSSJsComment.class.st b/src/FAST-CSS-Model/FASTCSSJsComment.class.st index aff4972..8810748 100644 --- a/src/FAST-CSS-Model/FASTCSSJsComment.class.st +++ b/src/FAST-CSS-Model/FASTCSSJsComment.class.st @@ -9,8 +9,8 @@ Class { { #category : 'meta' } FASTCSSJsComment class >> annotation [ + - ^ self ] diff --git a/src/FAST-CSS-Model/FASTCSSKeyframeBlock.class.st b/src/FAST-CSS-Model/FASTCSSKeyframeBlock.class.st index a0fbc6c..18c24f8 100644 --- a/src/FAST-CSS-Model/FASTCSSKeyframeBlock.class.st +++ b/src/FAST-CSS-Model/FASTCSSKeyframeBlock.class.st @@ -1,6 +1,21 @@ +" +## Relations +====================== + +### Children +| Relation | Origin | Opposite | Type | Comment | +|---| +| `childrenNodes` | `FASTCSSKeyframeBlock` | `keyframeBlockOwner` | `FASTCSSEntity` | | + + + +" Class { #name : 'FASTCSSKeyframeBlock', #superclass : 'FASTCSSEntity', + #instVars : [ + '#childrenNodes => FMMany type: #FASTCSSEntity opposite: #keyframeBlockOwner' + ], #category : 'FAST-CSS-Model-Entities', #package : 'FAST-CSS-Model', #tag : 'Entities' @@ -9,8 +24,34 @@ Class { { #category : 'meta' } FASTCSSKeyframeBlock class >> annotation [ + - ^ self +] + +{ #category : 'adding' } +FASTCSSKeyframeBlock >> addChildrenNode: anObject [ + + + + ^ self childrenNodes add: anObject +] + +{ #category : 'accessing' } +FASTCSSKeyframeBlock >> childrenNodes [ + "Relation named: #childrenNodes type: #FASTCSSEntity opposite: #keyframeBlockOwner" + + + + + ^ childrenNodes +] + +{ #category : 'accessing' } +FASTCSSKeyframeBlock >> childrenNodes: anObject [ + + + + childrenNodes value: anObject ] diff --git a/src/FAST-CSS-Model/FASTCSSKeyframeBlockList.class.st b/src/FAST-CSS-Model/FASTCSSKeyframeBlockList.class.st index 06980af..0e0fa78 100644 --- a/src/FAST-CSS-Model/FASTCSSKeyframeBlockList.class.st +++ b/src/FAST-CSS-Model/FASTCSSKeyframeBlockList.class.st @@ -1,6 +1,21 @@ +" +## Relations +====================== + +### Children +| Relation | Origin | Opposite | Type | Comment | +|---| +| `childrenNodes` | `FASTCSSKeyframeBlockList` | `keyframeBlockListOwner` | `FASTCSSEntity` | | + + + +" Class { #name : 'FASTCSSKeyframeBlockList', #superclass : 'FASTCSSEntity', + #instVars : [ + '#childrenNodes => FMMany type: #FASTCSSEntity opposite: #keyframeBlockListOwner' + ], #category : 'FAST-CSS-Model-Entities', #package : 'FAST-CSS-Model', #tag : 'Entities' @@ -9,8 +24,34 @@ Class { { #category : 'meta' } FASTCSSKeyframeBlockList class >> annotation [ + - ^ self +] + +{ #category : 'adding' } +FASTCSSKeyframeBlockList >> addChildrenNode: anObject [ + + + + ^ self childrenNodes add: anObject +] + +{ #category : 'accessing' } +FASTCSSKeyframeBlockList >> childrenNodes [ + "Relation named: #childrenNodes type: #FASTCSSEntity opposite: #keyframeBlockListOwner" + + + + + ^ childrenNodes +] + +{ #category : 'accessing' } +FASTCSSKeyframeBlockList >> childrenNodes: anObject [ + + + + childrenNodes value: anObject ] diff --git a/src/FAST-CSS-Model/FASTCSSKeyframesName.class.st b/src/FAST-CSS-Model/FASTCSSKeyframesName.class.st index 931abd5..2577887 100644 --- a/src/FAST-CSS-Model/FASTCSSKeyframesName.class.st +++ b/src/FAST-CSS-Model/FASTCSSKeyframesName.class.st @@ -9,8 +9,8 @@ Class { { #category : 'meta' } FASTCSSKeyframesName class >> annotation [ + - ^ self ] diff --git a/src/FAST-CSS-Model/FASTCSSKeyframesStatement.class.st b/src/FAST-CSS-Model/FASTCSSKeyframesStatement.class.st index 17c11d3..d0ce74b 100644 --- a/src/FAST-CSS-Model/FASTCSSKeyframesStatement.class.st +++ b/src/FAST-CSS-Model/FASTCSSKeyframesStatement.class.st @@ -1,6 +1,21 @@ +" +## Relations +====================== + +### Children +| Relation | Origin | Opposite | Type | Comment | +|---| +| `childrenNodes` | `FASTCSSKeyframesStatement` | `keyframesStatementOwner` | `FASTCSSEntity` | | + + + +" Class { #name : 'FASTCSSKeyframesStatement', #superclass : 'FASTCSSEntity', + #instVars : [ + '#childrenNodes => FMMany type: #FASTCSSEntity opposite: #keyframesStatementOwner' + ], #category : 'FAST-CSS-Model-Entities', #package : 'FAST-CSS-Model', #tag : 'Entities' @@ -9,8 +24,34 @@ Class { { #category : 'meta' } FASTCSSKeyframesStatement class >> annotation [ + - ^ self +] + +{ #category : 'adding' } +FASTCSSKeyframesStatement >> addChildrenNode: anObject [ + + + + ^ self childrenNodes add: anObject +] + +{ #category : 'accessing' } +FASTCSSKeyframesStatement >> childrenNodes [ + "Relation named: #childrenNodes type: #FASTCSSEntity opposite: #keyframesStatementOwner" + + + + + ^ childrenNodes +] + +{ #category : 'accessing' } +FASTCSSKeyframesStatement >> childrenNodes: anObject [ + + + + childrenNodes value: anObject ] diff --git a/src/FAST-CSS-Model/FASTCSSKeywordQuery.class.st b/src/FAST-CSS-Model/FASTCSSKeywordQuery.class.st index dec62db..833c3e7 100644 --- a/src/FAST-CSS-Model/FASTCSSKeywordQuery.class.st +++ b/src/FAST-CSS-Model/FASTCSSKeywordQuery.class.st @@ -9,8 +9,8 @@ Class { { #category : 'meta' } FASTCSSKeywordQuery class >> annotation [ + - ^ self ] diff --git a/src/FAST-CSS-Model/FASTCSSMediaStatement.class.st b/src/FAST-CSS-Model/FASTCSSMediaStatement.class.st index 8b43a84..7ead032 100644 --- a/src/FAST-CSS-Model/FASTCSSMediaStatement.class.st +++ b/src/FAST-CSS-Model/FASTCSSMediaStatement.class.st @@ -1,6 +1,21 @@ +" +## Relations +====================== + +### Children +| Relation | Origin | Opposite | Type | Comment | +|---| +| `childrenNodes` | `FASTCSSMediaStatement` | `mediaStatementOwner` | `FASTCSSEntity` | | + + + +" Class { #name : 'FASTCSSMediaStatement', #superclass : 'FASTCSSEntity', + #instVars : [ + '#childrenNodes => FMMany type: #FASTCSSEntity opposite: #mediaStatementOwner' + ], #category : 'FAST-CSS-Model-Entities', #package : 'FAST-CSS-Model', #tag : 'Entities' @@ -9,8 +24,34 @@ Class { { #category : 'meta' } FASTCSSMediaStatement class >> annotation [ + - ^ self +] + +{ #category : 'adding' } +FASTCSSMediaStatement >> addChildrenNode: anObject [ + + + + ^ self childrenNodes add: anObject +] + +{ #category : 'accessing' } +FASTCSSMediaStatement >> childrenNodes [ + "Relation named: #childrenNodes type: #FASTCSSEntity opposite: #mediaStatementOwner" + + + + + ^ childrenNodes +] + +{ #category : 'accessing' } +FASTCSSMediaStatement >> childrenNodes: anObject [ + + + + childrenNodes value: anObject ] diff --git a/src/FAST-CSS-Model/FASTCSSModel.class.st b/src/FAST-CSS-Model/FASTCSSModel.class.st index 674ff1d..42b89d4 100644 --- a/src/FAST-CSS-Model/FASTCSSModel.class.st +++ b/src/FAST-CSS-Model/FASTCSSModel.class.st @@ -10,13 +10,17 @@ Class { { #category : 'accessing' } FASTCSSModel class >> allSubmetamodelsPackagesNames [ + + ^ #(#'Moose-Query' #'Famix-Traits' #'FAST-Core-Model') ] { #category : 'meta' } FASTCSSModel class >> annotation [ - + + + ] diff --git a/src/FAST-CSS-Model/FASTCSSNamespaceName.class.st b/src/FAST-CSS-Model/FASTCSSNamespaceName.class.st index 27afef0..85e1a9d 100644 --- a/src/FAST-CSS-Model/FASTCSSNamespaceName.class.st +++ b/src/FAST-CSS-Model/FASTCSSNamespaceName.class.st @@ -9,8 +9,8 @@ Class { { #category : 'meta' } FASTCSSNamespaceName class >> annotation [ + - ^ self ] diff --git a/src/FAST-CSS-Model/FASTCSSNamespaceSelector.class.st b/src/FAST-CSS-Model/FASTCSSNamespaceSelector.class.st index f8729eb..6f67692 100644 --- a/src/FAST-CSS-Model/FASTCSSNamespaceSelector.class.st +++ b/src/FAST-CSS-Model/FASTCSSNamespaceSelector.class.st @@ -1,6 +1,21 @@ +" +## Relations +====================== + +### Children +| Relation | Origin | Opposite | Type | Comment | +|---| +| `childrenNodes` | `FASTCSSNamespaceSelector` | `namespaceSelectorOwner` | `FASTCSSEntity` | | + + + +" Class { #name : 'FASTCSSNamespaceSelector', #superclass : 'FASTCSSEntity', + #instVars : [ + '#childrenNodes => FMMany type: #FASTCSSEntity opposite: #namespaceSelectorOwner' + ], #category : 'FAST-CSS-Model-Entities', #package : 'FAST-CSS-Model', #tag : 'Entities' @@ -9,8 +24,34 @@ Class { { #category : 'meta' } FASTCSSNamespaceSelector class >> annotation [ + - ^ self +] + +{ #category : 'adding' } +FASTCSSNamespaceSelector >> addChildrenNode: anObject [ + + + + ^ self childrenNodes add: anObject +] + +{ #category : 'accessing' } +FASTCSSNamespaceSelector >> childrenNodes [ + "Relation named: #childrenNodes type: #FASTCSSEntity opposite: #namespaceSelectorOwner" + + + + + ^ childrenNodes +] + +{ #category : 'accessing' } +FASTCSSNamespaceSelector >> childrenNodes: anObject [ + + + + childrenNodes value: anObject ] diff --git a/src/FAST-CSS-Model/FASTCSSNamespaceStatement.class.st b/src/FAST-CSS-Model/FASTCSSNamespaceStatement.class.st index 53ea8b2..3e376c1 100644 --- a/src/FAST-CSS-Model/FASTCSSNamespaceStatement.class.st +++ b/src/FAST-CSS-Model/FASTCSSNamespaceStatement.class.st @@ -1,6 +1,21 @@ +" +## Relations +====================== + +### Children +| Relation | Origin | Opposite | Type | Comment | +|---| +| `childrenNodes` | `FASTCSSNamespaceStatement` | `namespaceStatementOwner` | `FASTCSSEntity` | | + + + +" Class { #name : 'FASTCSSNamespaceStatement', #superclass : 'FASTCSSEntity', + #instVars : [ + '#childrenNodes => FMMany type: #FASTCSSEntity opposite: #namespaceStatementOwner' + ], #category : 'FAST-CSS-Model-Entities', #package : 'FAST-CSS-Model', #tag : 'Entities' @@ -9,8 +24,34 @@ Class { { #category : 'meta' } FASTCSSNamespaceStatement class >> annotation [ + - ^ self +] + +{ #category : 'adding' } +FASTCSSNamespaceStatement >> addChildrenNode: anObject [ + + + + ^ self childrenNodes add: anObject +] + +{ #category : 'accessing' } +FASTCSSNamespaceStatement >> childrenNodes [ + "Relation named: #childrenNodes type: #FASTCSSEntity opposite: #namespaceStatementOwner" + + + + + ^ childrenNodes +] + +{ #category : 'accessing' } +FASTCSSNamespaceStatement >> childrenNodes: anObject [ + + + + childrenNodes value: anObject ] diff --git a/src/FAST-CSS-Model/FASTCSSNestingSelector.class.st b/src/FAST-CSS-Model/FASTCSSNestingSelector.class.st index 8fd2afa..495af30 100644 --- a/src/FAST-CSS-Model/FASTCSSNestingSelector.class.st +++ b/src/FAST-CSS-Model/FASTCSSNestingSelector.class.st @@ -9,8 +9,8 @@ Class { { #category : 'meta' } FASTCSSNestingSelector class >> annotation [ + - ^ self ] diff --git a/src/FAST-CSS-Model/FASTCSSParenthesizedQuery.class.st b/src/FAST-CSS-Model/FASTCSSParenthesizedQuery.class.st index 193aa6d..ec9d275 100644 --- a/src/FAST-CSS-Model/FASTCSSParenthesizedQuery.class.st +++ b/src/FAST-CSS-Model/FASTCSSParenthesizedQuery.class.st @@ -1,6 +1,21 @@ +" +## Relations +====================== + +### Children +| Relation | Origin | Opposite | Type | Comment | +|---| +| `childrenNode` | `FASTCSSParenthesizedQuery` | `parenthesizedQueryOwner` | `FASTCSSEntity` | | + + + +" Class { #name : 'FASTCSSParenthesizedQuery', #superclass : 'FASTCSSEntity', + #instVars : [ + '#childrenNode => FMOne type: #FASTCSSEntity opposite: #parenthesizedQueryOwner' + ], #category : 'FAST-CSS-Model-Entities', #package : 'FAST-CSS-Model', #tag : 'Entities' @@ -9,8 +24,25 @@ Class { { #category : 'meta' } FASTCSSParenthesizedQuery class >> annotation [ + - ^ self +] + +{ #category : 'accessing' } +FASTCSSParenthesizedQuery >> childrenNode [ + "Relation named: #childrenNode type: #FASTCSSEntity opposite: #parenthesizedQueryOwner" + + + + ^ childrenNode +] + +{ #category : 'accessing' } +FASTCSSParenthesizedQuery >> childrenNode: anObject [ + + + + childrenNode := anObject ] diff --git a/src/FAST-CSS-Model/FASTCSSParenthesizedValue.class.st b/src/FAST-CSS-Model/FASTCSSParenthesizedValue.class.st index 0305851..f949f12 100644 --- a/src/FAST-CSS-Model/FASTCSSParenthesizedValue.class.st +++ b/src/FAST-CSS-Model/FASTCSSParenthesizedValue.class.st @@ -1,6 +1,21 @@ +" +## Relations +====================== + +### Children +| Relation | Origin | Opposite | Type | Comment | +|---| +| `childrenNode` | `FASTCSSParenthesizedValue` | `parenthesizedValueOwner` | `FASTCSSEntity` | | + + + +" Class { #name : 'FASTCSSParenthesizedValue', #superclass : 'FASTCSSEntity', + #instVars : [ + '#childrenNode => FMOne type: #FASTCSSEntity opposite: #parenthesizedValueOwner' + ], #category : 'FAST-CSS-Model-Entities', #package : 'FAST-CSS-Model', #tag : 'Entities' @@ -9,8 +24,25 @@ Class { { #category : 'meta' } FASTCSSParenthesizedValue class >> annotation [ + - ^ self +] + +{ #category : 'accessing' } +FASTCSSParenthesizedValue >> childrenNode [ + "Relation named: #childrenNode type: #FASTCSSEntity opposite: #parenthesizedValueOwner" + + + + ^ childrenNode +] + +{ #category : 'accessing' } +FASTCSSParenthesizedValue >> childrenNode: anObject [ + + + + childrenNode := anObject ] diff --git a/src/FAST-CSS-Model/FASTCSSPlainValue.class.st b/src/FAST-CSS-Model/FASTCSSPlainValue.class.st index 0537d62..e740f26 100644 --- a/src/FAST-CSS-Model/FASTCSSPlainValue.class.st +++ b/src/FAST-CSS-Model/FASTCSSPlainValue.class.st @@ -9,8 +9,8 @@ Class { { #category : 'meta' } FASTCSSPlainValue class >> annotation [ + - ^ self ] diff --git a/src/FAST-CSS-Model/FASTCSSPostcssStatement.class.st b/src/FAST-CSS-Model/FASTCSSPostcssStatement.class.st index 8daef39..2cc75f1 100644 --- a/src/FAST-CSS-Model/FASTCSSPostcssStatement.class.st +++ b/src/FAST-CSS-Model/FASTCSSPostcssStatement.class.st @@ -1,6 +1,21 @@ +" +## Relations +====================== + +### Children +| Relation | Origin | Opposite | Type | Comment | +|---| +| `childrenNodes` | `FASTCSSPostcssStatement` | `postcssStatementOwner` | `FASTCSSEntity` | | + + + +" Class { #name : 'FASTCSSPostcssStatement', #superclass : 'FASTCSSEntity', + #instVars : [ + '#childrenNodes => FMMany type: #FASTCSSEntity opposite: #postcssStatementOwner' + ], #category : 'FAST-CSS-Model-Entities', #package : 'FAST-CSS-Model', #tag : 'Entities' @@ -9,8 +24,34 @@ Class { { #category : 'meta' } FASTCSSPostcssStatement class >> annotation [ + - ^ self +] + +{ #category : 'adding' } +FASTCSSPostcssStatement >> addChildrenNode: anObject [ + + + + ^ self childrenNodes add: anObject +] + +{ #category : 'accessing' } +FASTCSSPostcssStatement >> childrenNodes [ + "Relation named: #childrenNodes type: #FASTCSSEntity opposite: #postcssStatementOwner" + + + + + ^ childrenNodes +] + +{ #category : 'accessing' } +FASTCSSPostcssStatement >> childrenNodes: anObject [ + + + + childrenNodes value: anObject ] diff --git a/src/FAST-CSS-Model/FASTCSSPropertyName.class.st b/src/FAST-CSS-Model/FASTCSSPropertyName.class.st index c78d534..d283b9b 100644 --- a/src/FAST-CSS-Model/FASTCSSPropertyName.class.st +++ b/src/FAST-CSS-Model/FASTCSSPropertyName.class.st @@ -9,8 +9,8 @@ Class { { #category : 'meta' } FASTCSSPropertyName class >> annotation [ + - ^ self ] diff --git a/src/FAST-CSS-Model/FASTCSSPseudoClassSelector.class.st b/src/FAST-CSS-Model/FASTCSSPseudoClassSelector.class.st index 4ee13fb..96e32c5 100644 --- a/src/FAST-CSS-Model/FASTCSSPseudoClassSelector.class.st +++ b/src/FAST-CSS-Model/FASTCSSPseudoClassSelector.class.st @@ -1,6 +1,21 @@ +" +## Relations +====================== + +### Children +| Relation | Origin | Opposite | Type | Comment | +|---| +| `childrenNodes` | `FASTCSSPseudoClassSelector` | `pseudoClassSelectorOwner` | `FASTCSSEntity` | | + + + +" Class { #name : 'FASTCSSPseudoClassSelector', #superclass : 'FASTCSSEntity', + #instVars : [ + '#childrenNodes => FMMany type: #FASTCSSEntity opposite: #pseudoClassSelectorOwner' + ], #category : 'FAST-CSS-Model-Entities', #package : 'FAST-CSS-Model', #tag : 'Entities' @@ -9,8 +24,34 @@ Class { { #category : 'meta' } FASTCSSPseudoClassSelector class >> annotation [ + - ^ self +] + +{ #category : 'adding' } +FASTCSSPseudoClassSelector >> addChildrenNode: anObject [ + + + + ^ self childrenNodes add: anObject +] + +{ #category : 'accessing' } +FASTCSSPseudoClassSelector >> childrenNodes [ + "Relation named: #childrenNodes type: #FASTCSSEntity opposite: #pseudoClassSelectorOwner" + + + + + ^ childrenNodes +] + +{ #category : 'accessing' } +FASTCSSPseudoClassSelector >> childrenNodes: anObject [ + + + + childrenNodes value: anObject ] diff --git a/src/FAST-CSS-Model/FASTCSSPseudoElementSelector.class.st b/src/FAST-CSS-Model/FASTCSSPseudoElementSelector.class.st index 2812dbb..c203454 100644 --- a/src/FAST-CSS-Model/FASTCSSPseudoElementSelector.class.st +++ b/src/FAST-CSS-Model/FASTCSSPseudoElementSelector.class.st @@ -1,6 +1,21 @@ +" +## Relations +====================== + +### Children +| Relation | Origin | Opposite | Type | Comment | +|---| +| `childrenNodes` | `FASTCSSPseudoElementSelector` | `pseudoElementSelectorOwner` | `FASTCSSEntity` | | + + + +" Class { #name : 'FASTCSSPseudoElementSelector', #superclass : 'FASTCSSEntity', + #instVars : [ + '#childrenNodes => FMMany type: #FASTCSSEntity opposite: #pseudoElementSelectorOwner' + ], #category : 'FAST-CSS-Model-Entities', #package : 'FAST-CSS-Model', #tag : 'Entities' @@ -9,8 +24,34 @@ Class { { #category : 'meta' } FASTCSSPseudoElementSelector class >> annotation [ + - ^ self +] + +{ #category : 'adding' } +FASTCSSPseudoElementSelector >> addChildrenNode: anObject [ + + + + ^ self childrenNodes add: anObject +] + +{ #category : 'accessing' } +FASTCSSPseudoElementSelector >> childrenNodes [ + "Relation named: #childrenNodes type: #FASTCSSEntity opposite: #pseudoElementSelectorOwner" + + + + + ^ childrenNodes +] + +{ #category : 'accessing' } +FASTCSSPseudoElementSelector >> childrenNodes: anObject [ + + + + childrenNodes value: anObject ] diff --git a/src/FAST-CSS-Model/FASTCSSRuleSet.class.st b/src/FAST-CSS-Model/FASTCSSRuleSet.class.st index 4bab319..8ba6a77 100644 --- a/src/FAST-CSS-Model/FASTCSSRuleSet.class.st +++ b/src/FAST-CSS-Model/FASTCSSRuleSet.class.st @@ -1,6 +1,21 @@ +" +## Relations +====================== + +### Children +| Relation | Origin | Opposite | Type | Comment | +|---| +| `childrenNodes` | `FASTCSSRuleSet` | `ruleSetOwner` | `FASTCSSEntity` | | + + + +" Class { #name : 'FASTCSSRuleSet', #superclass : 'FASTCSSEntity', + #instVars : [ + '#childrenNodes => FMMany type: #FASTCSSEntity opposite: #ruleSetOwner' + ], #category : 'FAST-CSS-Model-Entities', #package : 'FAST-CSS-Model', #tag : 'Entities' @@ -9,8 +24,34 @@ Class { { #category : 'meta' } FASTCSSRuleSet class >> annotation [ + - ^ self +] + +{ #category : 'adding' } +FASTCSSRuleSet >> addChildrenNode: anObject [ + + + + ^ self childrenNodes add: anObject +] + +{ #category : 'accessing' } +FASTCSSRuleSet >> childrenNodes [ + "Relation named: #childrenNodes type: #FASTCSSEntity opposite: #ruleSetOwner" + + + + + ^ childrenNodes +] + +{ #category : 'accessing' } +FASTCSSRuleSet >> childrenNodes: anObject [ + + + + childrenNodes value: anObject ] diff --git a/src/FAST-CSS-Model/FASTCSSScopeStatement.class.st b/src/FAST-CSS-Model/FASTCSSScopeStatement.class.st index afbdd3b..bf291df 100644 --- a/src/FAST-CSS-Model/FASTCSSScopeStatement.class.st +++ b/src/FAST-CSS-Model/FASTCSSScopeStatement.class.st @@ -1,6 +1,21 @@ +" +## Relations +====================== + +### Children +| Relation | Origin | Opposite | Type | Comment | +|---| +| `childrenNodes` | `FASTCSSScopeStatement` | `scopeStatementOwner` | `FASTCSSEntity` | | + + + +" Class { #name : 'FASTCSSScopeStatement', #superclass : 'FASTCSSEntity', + #instVars : [ + '#childrenNodes => FMMany type: #FASTCSSEntity opposite: #scopeStatementOwner' + ], #category : 'FAST-CSS-Model-Entities', #package : 'FAST-CSS-Model', #tag : 'Entities' @@ -9,8 +24,34 @@ Class { { #category : 'meta' } FASTCSSScopeStatement class >> annotation [ + - ^ self +] + +{ #category : 'adding' } +FASTCSSScopeStatement >> addChildrenNode: anObject [ + + + + ^ self childrenNodes add: anObject +] + +{ #category : 'accessing' } +FASTCSSScopeStatement >> childrenNodes [ + "Relation named: #childrenNodes type: #FASTCSSEntity opposite: #scopeStatementOwner" + + + + + ^ childrenNodes +] + +{ #category : 'accessing' } +FASTCSSScopeStatement >> childrenNodes: anObject [ + + + + childrenNodes value: anObject ] diff --git a/src/FAST-CSS-Model/FASTCSSSelectorQuery.class.st b/src/FAST-CSS-Model/FASTCSSSelectorQuery.class.st index 84bb805..c8cc592 100644 --- a/src/FAST-CSS-Model/FASTCSSSelectorQuery.class.st +++ b/src/FAST-CSS-Model/FASTCSSSelectorQuery.class.st @@ -1,6 +1,21 @@ +" +## Relations +====================== + +### Children +| Relation | Origin | Opposite | Type | Comment | +|---| +| `childrenNode` | `FASTCSSSelectorQuery` | `selectorQueryOwner` | `FASTCSSEntity` | | + + + +" Class { #name : 'FASTCSSSelectorQuery', #superclass : 'FASTCSSEntity', + #instVars : [ + '#childrenNode => FMOne type: #FASTCSSEntity opposite: #selectorQueryOwner' + ], #category : 'FAST-CSS-Model-Entities', #package : 'FAST-CSS-Model', #tag : 'Entities' @@ -9,8 +24,25 @@ Class { { #category : 'meta' } FASTCSSSelectorQuery class >> annotation [ + - ^ self +] + +{ #category : 'accessing' } +FASTCSSSelectorQuery >> childrenNode [ + "Relation named: #childrenNode type: #FASTCSSEntity opposite: #selectorQueryOwner" + + + + ^ childrenNode +] + +{ #category : 'accessing' } +FASTCSSSelectorQuery >> childrenNode: anObject [ + + + + childrenNode := anObject ] diff --git a/src/FAST-CSS-Model/FASTCSSSelectors.class.st b/src/FAST-CSS-Model/FASTCSSSelectors.class.st index 4324bde..e4a89aa 100644 --- a/src/FAST-CSS-Model/FASTCSSSelectors.class.st +++ b/src/FAST-CSS-Model/FASTCSSSelectors.class.st @@ -1,6 +1,21 @@ +" +## Relations +====================== + +### Children +| Relation | Origin | Opposite | Type | Comment | +|---| +| `childrenNodes` | `FASTCSSSelectors` | `selectorsOwner` | `FASTCSSEntity` | | + + + +" Class { #name : 'FASTCSSSelectors', #superclass : 'FASTCSSEntity', + #instVars : [ + '#childrenNodes => FMMany type: #FASTCSSEntity opposite: #selectorsOwner' + ], #category : 'FAST-CSS-Model-Entities', #package : 'FAST-CSS-Model', #tag : 'Entities' @@ -9,8 +24,34 @@ Class { { #category : 'meta' } FASTCSSSelectors class >> annotation [ + - ^ self +] + +{ #category : 'adding' } +FASTCSSSelectors >> addChildrenNode: anObject [ + + + + ^ self childrenNodes add: anObject +] + +{ #category : 'accessing' } +FASTCSSSelectors >> childrenNodes [ + "Relation named: #childrenNodes type: #FASTCSSEntity opposite: #selectorsOwner" + + + + + ^ childrenNodes +] + +{ #category : 'accessing' } +FASTCSSSelectors >> childrenNodes: anObject [ + + + + childrenNodes value: anObject ] diff --git a/src/FAST-CSS-Model/FASTCSSSiblingSelector.class.st b/src/FAST-CSS-Model/FASTCSSSiblingSelector.class.st index 33af815..58078fc 100644 --- a/src/FAST-CSS-Model/FASTCSSSiblingSelector.class.st +++ b/src/FAST-CSS-Model/FASTCSSSiblingSelector.class.st @@ -1,6 +1,21 @@ +" +## Relations +====================== + +### Children +| Relation | Origin | Opposite | Type | Comment | +|---| +| `childrenNodes` | `FASTCSSSiblingSelector` | `siblingSelectorOwner` | `FASTCSSEntity` | | + + + +" Class { #name : 'FASTCSSSiblingSelector', #superclass : 'FASTCSSEntity', + #instVars : [ + '#childrenNodes => FMMany type: #FASTCSSEntity opposite: #siblingSelectorOwner' + ], #category : 'FAST-CSS-Model-Entities', #package : 'FAST-CSS-Model', #tag : 'Entities' @@ -9,8 +24,34 @@ Class { { #category : 'meta' } FASTCSSSiblingSelector class >> annotation [ + - ^ self +] + +{ #category : 'adding' } +FASTCSSSiblingSelector >> addChildrenNode: anObject [ + + + + ^ self childrenNodes add: anObject +] + +{ #category : 'accessing' } +FASTCSSSiblingSelector >> childrenNodes [ + "Relation named: #childrenNodes type: #FASTCSSEntity opposite: #siblingSelectorOwner" + + + + + ^ childrenNodes +] + +{ #category : 'accessing' } +FASTCSSSiblingSelector >> childrenNodes: anObject [ + + + + childrenNodes value: anObject ] diff --git a/src/FAST-CSS-Model/FASTCSSStringContent.class.st b/src/FAST-CSS-Model/FASTCSSStringContent.class.st index 4935eaf..db91e26 100644 --- a/src/FAST-CSS-Model/FASTCSSStringContent.class.st +++ b/src/FAST-CSS-Model/FASTCSSStringContent.class.st @@ -9,8 +9,8 @@ Class { { #category : 'meta' } FASTCSSStringContent class >> annotation [ + - ^ self ] diff --git a/src/FAST-CSS-Model/FASTCSSStringValue.class.st b/src/FAST-CSS-Model/FASTCSSStringValue.class.st index bfa2b2b..607be31 100644 --- a/src/FAST-CSS-Model/FASTCSSStringValue.class.st +++ b/src/FAST-CSS-Model/FASTCSSStringValue.class.st @@ -1,6 +1,21 @@ +" +## Relations +====================== + +### Children +| Relation | Origin | Opposite | Type | Comment | +|---| +| `childrenNodes` | `FASTCSSStringValue` | `stringValueOwner` | `FASTCSSEntity` | | + + + +" Class { #name : 'FASTCSSStringValue', #superclass : 'FASTCSSEntity', + #instVars : [ + '#childrenNodes => FMMany type: #FASTCSSEntity opposite: #stringValueOwner' + ], #category : 'FAST-CSS-Model-Entities', #package : 'FAST-CSS-Model', #tag : 'Entities' @@ -9,8 +24,34 @@ Class { { #category : 'meta' } FASTCSSStringValue class >> annotation [ + - ^ self +] + +{ #category : 'adding' } +FASTCSSStringValue >> addChildrenNode: anObject [ + + + + ^ self childrenNodes add: anObject +] + +{ #category : 'accessing' } +FASTCSSStringValue >> childrenNodes [ + "Relation named: #childrenNodes type: #FASTCSSEntity opposite: #stringValueOwner" + + + + + ^ childrenNodes +] + +{ #category : 'accessing' } +FASTCSSStringValue >> childrenNodes: anObject [ + + + + childrenNodes value: anObject ] diff --git a/src/FAST-CSS-Model/FASTCSSStylesheet.class.st b/src/FAST-CSS-Model/FASTCSSStylesheet.class.st index 5e0fbb9..e92acf0 100644 --- a/src/FAST-CSS-Model/FASTCSSStylesheet.class.st +++ b/src/FAST-CSS-Model/FASTCSSStylesheet.class.st @@ -2,6 +2,11 @@ ## Relations ====================== +### Children +| Relation | Origin | Opposite | Type | Comment | +|---| +| `childrenNodes` | `FASTCSSStylesheet` | `stylesheetOwner` | `FASTCSSEntity` | | + ### Other | Relation | Origin | Opposite | Type | Comment | |---| @@ -21,6 +26,9 @@ Class { #superclass : 'FASTCSSEntity', #traits : 'FamixTHasImmediateSource', #classTraits : 'FamixTHasImmediateSource classTrait', + #instVars : [ + '#childrenNodes => FMMany type: #FASTCSSEntity opposite: #stylesheetOwner' + ], #category : 'FAST-CSS-Model-Entities', #package : 'FAST-CSS-Model', #tag : 'Entities' @@ -29,8 +37,34 @@ Class { { #category : 'meta' } FASTCSSStylesheet class >> annotation [ + - ^ self +] + +{ #category : 'adding' } +FASTCSSStylesheet >> addChildrenNode: anObject [ + + + + ^ self childrenNodes add: anObject +] + +{ #category : 'accessing' } +FASTCSSStylesheet >> childrenNodes [ + "Relation named: #childrenNodes type: #FASTCSSEntity opposite: #stylesheetOwner" + + + + + ^ childrenNodes +] + +{ #category : 'accessing' } +FASTCSSStylesheet >> childrenNodes: anObject [ + + + + childrenNodes value: anObject ] diff --git a/src/FAST-CSS-Model/FASTCSSSupportsStatement.class.st b/src/FAST-CSS-Model/FASTCSSSupportsStatement.class.st index 2ff4196..5091ba4 100644 --- a/src/FAST-CSS-Model/FASTCSSSupportsStatement.class.st +++ b/src/FAST-CSS-Model/FASTCSSSupportsStatement.class.st @@ -1,6 +1,21 @@ +" +## Relations +====================== + +### Children +| Relation | Origin | Opposite | Type | Comment | +|---| +| `childrenNodes` | `FASTCSSSupportsStatement` | `supportsStatementOwner` | `FASTCSSEntity` | | + + + +" Class { #name : 'FASTCSSSupportsStatement', #superclass : 'FASTCSSEntity', + #instVars : [ + '#childrenNodes => FMMany type: #FASTCSSEntity opposite: #supportsStatementOwner' + ], #category : 'FAST-CSS-Model-Entities', #package : 'FAST-CSS-Model', #tag : 'Entities' @@ -9,8 +24,34 @@ Class { { #category : 'meta' } FASTCSSSupportsStatement class >> annotation [ + - ^ self +] + +{ #category : 'adding' } +FASTCSSSupportsStatement >> addChildrenNode: anObject [ + + + + ^ self childrenNodes add: anObject +] + +{ #category : 'accessing' } +FASTCSSSupportsStatement >> childrenNodes [ + "Relation named: #childrenNodes type: #FASTCSSEntity opposite: #supportsStatementOwner" + + + + + ^ childrenNodes +] + +{ #category : 'accessing' } +FASTCSSSupportsStatement >> childrenNodes: anObject [ + + + + childrenNodes value: anObject ] diff --git a/src/FAST-CSS-Model/FASTCSSTEntityCreator.trait.st b/src/FAST-CSS-Model/FASTCSSTEntityCreator.trait.st index 70603af..d9f6ce6 100644 --- a/src/FAST-CSS-Model/FASTCSSTEntityCreator.trait.st +++ b/src/FAST-CSS-Model/FASTCSSTEntityCreator.trait.st @@ -14,15 +14,16 @@ Trait { { #category : 'meta' } FASTCSSTEntityCreator classSide >> annotation [ + - ^ self ] { #category : 'entity creation' } FASTCSSTEntityCreator >> newAdjacentSiblingSelector [ + ^ self add: FASTCSSAdjacentSiblingSelector new ] @@ -30,6 +31,7 @@ FASTCSSTEntityCreator >> newAdjacentSiblingSelector [ { #category : 'entity creation' } FASTCSSTEntityCreator >> newArguments [ + ^ self add: FASTCSSArguments new ] @@ -37,6 +39,7 @@ FASTCSSTEntityCreator >> newArguments [ { #category : 'entity creation' } FASTCSSTEntityCreator >> newAtKeyword [ + ^ self add: FASTCSSAtKeyword new ] @@ -44,6 +47,7 @@ FASTCSSTEntityCreator >> newAtKeyword [ { #category : 'entity creation' } FASTCSSTEntityCreator >> newAtRule [ + ^ self add: FASTCSSAtRule new ] @@ -51,6 +55,7 @@ FASTCSSTEntityCreator >> newAtRule [ { #category : 'entity creation' } FASTCSSTEntityCreator >> newAttributeName [ + ^ self add: FASTCSSAttributeName new ] @@ -58,6 +63,7 @@ FASTCSSTEntityCreator >> newAttributeName [ { #category : 'entity creation' } FASTCSSTEntityCreator >> newAttributeSelector [ + ^ self add: FASTCSSAttributeSelector new ] @@ -65,6 +71,7 @@ FASTCSSTEntityCreator >> newAttributeSelector [ { #category : 'entity creation' } FASTCSSTEntityCreator >> newBinaryExpression [ + ^ self add: FASTCSSBinaryExpression new ] @@ -72,6 +79,7 @@ FASTCSSTEntityCreator >> newBinaryExpression [ { #category : 'entity creation' } FASTCSSTEntityCreator >> newBinaryQuery [ + ^ self add: FASTCSSBinaryQuery new ] @@ -79,6 +87,7 @@ FASTCSSTEntityCreator >> newBinaryQuery [ { #category : 'entity creation' } FASTCSSTEntityCreator >> newBlock [ + ^ self add: FASTCSSBlock new ] @@ -86,6 +95,7 @@ FASTCSSTEntityCreator >> newBlock [ { #category : 'entity creation' } FASTCSSTEntityCreator >> newCallExpression [ + ^ self add: FASTCSSCallExpression new ] @@ -93,6 +103,7 @@ FASTCSSTEntityCreator >> newCallExpression [ { #category : 'entity creation' } FASTCSSTEntityCreator >> newCharsetStatement [ + ^ self add: FASTCSSCharsetStatement new ] @@ -100,6 +111,7 @@ FASTCSSTEntityCreator >> newCharsetStatement [ { #category : 'entity creation' } FASTCSSTEntityCreator >> newChildSelector [ + ^ self add: FASTCSSChildSelector new ] @@ -107,6 +119,7 @@ FASTCSSTEntityCreator >> newChildSelector [ { #category : 'entity creation' } FASTCSSTEntityCreator >> newClassName [ + ^ self add: FASTCSSClassName new ] @@ -114,6 +127,7 @@ FASTCSSTEntityCreator >> newClassName [ { #category : 'entity creation' } FASTCSSTEntityCreator >> newClassSelector [ + ^ self add: FASTCSSClassSelector new ] @@ -121,6 +135,7 @@ FASTCSSTEntityCreator >> newClassSelector [ { #category : 'entity creation' } FASTCSSTEntityCreator >> newColorValue [ + ^ self add: FASTCSSColorValue new ] @@ -128,6 +143,7 @@ FASTCSSTEntityCreator >> newColorValue [ { #category : 'entity creation' } FASTCSSTEntityCreator >> newComment [ + ^ self add: FASTCSSComment new ] @@ -135,6 +151,7 @@ FASTCSSTEntityCreator >> newComment [ { #category : 'entity creation' } FASTCSSTEntityCreator >> newDeclaration [ + ^ self add: FASTCSSDeclaration new ] @@ -142,6 +159,7 @@ FASTCSSTEntityCreator >> newDeclaration [ { #category : 'entity creation' } FASTCSSTEntityCreator >> newDescendantSelector [ + ^ self add: FASTCSSDescendantSelector new ] @@ -149,6 +167,7 @@ FASTCSSTEntityCreator >> newDescendantSelector [ { #category : 'entity creation' } FASTCSSTEntityCreator >> newERROR [ + ^ self add: FASTCSSERROR new ] @@ -156,6 +175,7 @@ FASTCSSTEntityCreator >> newERROR [ { #category : 'entity creation' } FASTCSSTEntityCreator >> newEscapeSequence [ + ^ self add: FASTCSSEscapeSequence new ] @@ -163,6 +183,7 @@ FASTCSSTEntityCreator >> newEscapeSequence [ { #category : 'entity creation' } FASTCSSTEntityCreator >> newFeatureName [ + ^ self add: FASTCSSFeatureName new ] @@ -170,6 +191,7 @@ FASTCSSTEntityCreator >> newFeatureName [ { #category : 'entity creation' } FASTCSSTEntityCreator >> newFeatureQuery [ + ^ self add: FASTCSSFeatureQuery new ] @@ -177,6 +199,7 @@ FASTCSSTEntityCreator >> newFeatureQuery [ { #category : 'entity creation' } FASTCSSTEntityCreator >> newFloatValue [ + ^ self add: FASTCSSFloatValue new ] @@ -184,6 +207,7 @@ FASTCSSTEntityCreator >> newFloatValue [ { #category : 'entity creation' } FASTCSSTEntityCreator >> newFrom [ + ^ self add: FASTCSSFrom new ] @@ -191,6 +215,7 @@ FASTCSSTEntityCreator >> newFrom [ { #category : 'entity creation' } FASTCSSTEntityCreator >> newFunctionName [ + ^ self add: FASTCSSFunctionName new ] @@ -198,6 +223,7 @@ FASTCSSTEntityCreator >> newFunctionName [ { #category : 'entity creation' } FASTCSSTEntityCreator >> newGridValue [ + ^ self add: FASTCSSGridValue new ] @@ -205,6 +231,7 @@ FASTCSSTEntityCreator >> newGridValue [ { #category : 'entity creation' } FASTCSSTEntityCreator >> newIdName [ + ^ self add: FASTCSSIdName new ] @@ -212,6 +239,7 @@ FASTCSSTEntityCreator >> newIdName [ { #category : 'entity creation' } FASTCSSTEntityCreator >> newIdSelector [ + ^ self add: FASTCSSIdSelector new ] @@ -219,6 +247,7 @@ FASTCSSTEntityCreator >> newIdSelector [ { #category : 'entity creation' } FASTCSSTEntityCreator >> newIdentifier [ + ^ self add: FASTCSSIdentifier new ] @@ -226,6 +255,7 @@ FASTCSSTEntityCreator >> newIdentifier [ { #category : 'entity creation' } FASTCSSTEntityCreator >> newImportStatement [ + ^ self add: FASTCSSImportStatement new ] @@ -233,6 +263,7 @@ FASTCSSTEntityCreator >> newImportStatement [ { #category : 'entity creation' } FASTCSSTEntityCreator >> newImportant [ + ^ self add: FASTCSSImportant new ] @@ -240,6 +271,7 @@ FASTCSSTEntityCreator >> newImportant [ { #category : 'entity creation' } FASTCSSTEntityCreator >> newImportantValue [ + ^ self add: FASTCSSImportantValue new ] @@ -247,6 +279,7 @@ FASTCSSTEntityCreator >> newImportantValue [ { #category : 'entity creation' } FASTCSSTEntityCreator >> newIntegerValue [ + ^ self add: FASTCSSIntegerValue new ] @@ -254,6 +287,7 @@ FASTCSSTEntityCreator >> newIntegerValue [ { #category : 'entity creation' } FASTCSSTEntityCreator >> newJsComment [ + ^ self add: FASTCSSJsComment new ] @@ -261,6 +295,7 @@ FASTCSSTEntityCreator >> newJsComment [ { #category : 'entity creation' } FASTCSSTEntityCreator >> newKeyframeBlock [ + ^ self add: FASTCSSKeyframeBlock new ] @@ -268,6 +303,7 @@ FASTCSSTEntityCreator >> newKeyframeBlock [ { #category : 'entity creation' } FASTCSSTEntityCreator >> newKeyframeBlockList [ + ^ self add: FASTCSSKeyframeBlockList new ] @@ -275,6 +311,7 @@ FASTCSSTEntityCreator >> newKeyframeBlockList [ { #category : 'entity creation' } FASTCSSTEntityCreator >> newKeyframesName [ + ^ self add: FASTCSSKeyframesName new ] @@ -282,6 +319,7 @@ FASTCSSTEntityCreator >> newKeyframesName [ { #category : 'entity creation' } FASTCSSTEntityCreator >> newKeyframesStatement [ + ^ self add: FASTCSSKeyframesStatement new ] @@ -289,6 +327,7 @@ FASTCSSTEntityCreator >> newKeyframesStatement [ { #category : 'entity creation' } FASTCSSTEntityCreator >> newKeywordQuery [ + ^ self add: FASTCSSKeywordQuery new ] @@ -296,6 +335,7 @@ FASTCSSTEntityCreator >> newKeywordQuery [ { #category : 'entity creation' } FASTCSSTEntityCreator >> newMediaStatement [ + ^ self add: FASTCSSMediaStatement new ] @@ -303,6 +343,7 @@ FASTCSSTEntityCreator >> newMediaStatement [ { #category : 'entity creation' } FASTCSSTEntityCreator >> newNamespaceName [ + ^ self add: FASTCSSNamespaceName new ] @@ -310,6 +351,7 @@ FASTCSSTEntityCreator >> newNamespaceName [ { #category : 'entity creation' } FASTCSSTEntityCreator >> newNamespaceSelector [ + ^ self add: FASTCSSNamespaceSelector new ] @@ -317,6 +359,7 @@ FASTCSSTEntityCreator >> newNamespaceSelector [ { #category : 'entity creation' } FASTCSSTEntityCreator >> newNamespaceStatement [ + ^ self add: FASTCSSNamespaceStatement new ] @@ -324,6 +367,7 @@ FASTCSSTEntityCreator >> newNamespaceStatement [ { #category : 'entity creation' } FASTCSSTEntityCreator >> newNestingSelector [ + ^ self add: FASTCSSNestingSelector new ] @@ -331,6 +375,7 @@ FASTCSSTEntityCreator >> newNestingSelector [ { #category : 'entity creation' } FASTCSSTEntityCreator >> newParenthesizedQuery [ + ^ self add: FASTCSSParenthesizedQuery new ] @@ -338,6 +383,7 @@ FASTCSSTEntityCreator >> newParenthesizedQuery [ { #category : 'entity creation' } FASTCSSTEntityCreator >> newParenthesizedValue [ + ^ self add: FASTCSSParenthesizedValue new ] @@ -345,6 +391,7 @@ FASTCSSTEntityCreator >> newParenthesizedValue [ { #category : 'entity creation' } FASTCSSTEntityCreator >> newPlainValue [ + ^ self add: FASTCSSPlainValue new ] @@ -352,6 +399,7 @@ FASTCSSTEntityCreator >> newPlainValue [ { #category : 'entity creation' } FASTCSSTEntityCreator >> newPostcssStatement [ + ^ self add: FASTCSSPostcssStatement new ] @@ -359,6 +407,7 @@ FASTCSSTEntityCreator >> newPostcssStatement [ { #category : 'entity creation' } FASTCSSTEntityCreator >> newPropertyName [ + ^ self add: FASTCSSPropertyName new ] @@ -366,6 +415,7 @@ FASTCSSTEntityCreator >> newPropertyName [ { #category : 'entity creation' } FASTCSSTEntityCreator >> newPseudoClassSelector [ + ^ self add: FASTCSSPseudoClassSelector new ] @@ -373,6 +423,7 @@ FASTCSSTEntityCreator >> newPseudoClassSelector [ { #category : 'entity creation' } FASTCSSTEntityCreator >> newPseudoElementSelector [ + ^ self add: FASTCSSPseudoElementSelector new ] @@ -380,6 +431,7 @@ FASTCSSTEntityCreator >> newPseudoElementSelector [ { #category : 'entity creation' } FASTCSSTEntityCreator >> newRuleSet [ + ^ self add: FASTCSSRuleSet new ] @@ -387,6 +439,7 @@ FASTCSSTEntityCreator >> newRuleSet [ { #category : 'entity creation' } FASTCSSTEntityCreator >> newScopeStatement [ + ^ self add: FASTCSSScopeStatement new ] @@ -394,6 +447,7 @@ FASTCSSTEntityCreator >> newScopeStatement [ { #category : 'entity creation' } FASTCSSTEntityCreator >> newSelectorQuery [ + ^ self add: FASTCSSSelectorQuery new ] @@ -401,6 +455,7 @@ FASTCSSTEntityCreator >> newSelectorQuery [ { #category : 'entity creation' } FASTCSSTEntityCreator >> newSelectors [ + ^ self add: FASTCSSSelectors new ] @@ -408,6 +463,7 @@ FASTCSSTEntityCreator >> newSelectors [ { #category : 'entity creation' } FASTCSSTEntityCreator >> newSiblingSelector [ + ^ self add: FASTCSSSiblingSelector new ] @@ -415,6 +471,7 @@ FASTCSSTEntityCreator >> newSiblingSelector [ { #category : 'entity creation' } FASTCSSTEntityCreator >> newStringContent [ + ^ self add: FASTCSSStringContent new ] @@ -422,6 +479,7 @@ FASTCSSTEntityCreator >> newStringContent [ { #category : 'entity creation' } FASTCSSTEntityCreator >> newStringValue [ + ^ self add: FASTCSSStringValue new ] @@ -429,6 +487,7 @@ FASTCSSTEntityCreator >> newStringValue [ { #category : 'entity creation' } FASTCSSTEntityCreator >> newStylesheet [ + ^ self add: FASTCSSStylesheet new ] @@ -436,6 +495,7 @@ FASTCSSTEntityCreator >> newStylesheet [ { #category : 'entity creation' } FASTCSSTEntityCreator >> newSupportsStatement [ + ^ self add: FASTCSSSupportsStatement new ] @@ -443,6 +503,7 @@ FASTCSSTEntityCreator >> newSupportsStatement [ { #category : 'entity creation' } FASTCSSTEntityCreator >> newTagName [ + ^ self add: FASTCSSTagName new ] @@ -450,6 +511,7 @@ FASTCSSTEntityCreator >> newTagName [ { #category : 'entity creation' } FASTCSSTEntityCreator >> newTo [ + ^ self add: FASTCSSTo new ] @@ -457,6 +519,7 @@ FASTCSSTEntityCreator >> newTo [ { #category : 'entity creation' } FASTCSSTEntityCreator >> newUnaryQuery [ + ^ self add: FASTCSSUnaryQuery new ] @@ -464,6 +527,7 @@ FASTCSSTEntityCreator >> newUnaryQuery [ { #category : 'entity creation' } FASTCSSTEntityCreator >> newUnit [ + ^ self add: FASTCSSUnit new ] @@ -471,6 +535,7 @@ FASTCSSTEntityCreator >> newUnit [ { #category : 'entity creation' } FASTCSSTEntityCreator >> newUniversalSelector [ + ^ self add: FASTCSSUniversalSelector new ] diff --git a/src/FAST-CSS-Model/FASTCSSTagName.class.st b/src/FAST-CSS-Model/FASTCSSTagName.class.st index 04b4057..9e4648f 100644 --- a/src/FAST-CSS-Model/FASTCSSTagName.class.st +++ b/src/FAST-CSS-Model/FASTCSSTagName.class.st @@ -9,8 +9,8 @@ Class { { #category : 'meta' } FASTCSSTagName class >> annotation [ + - ^ self ] diff --git a/src/FAST-CSS-Model/FASTCSSTo.class.st b/src/FAST-CSS-Model/FASTCSSTo.class.st index ce50a53..a0fc20c 100644 --- a/src/FAST-CSS-Model/FASTCSSTo.class.st +++ b/src/FAST-CSS-Model/FASTCSSTo.class.st @@ -9,8 +9,8 @@ Class { { #category : 'meta' } FASTCSSTo class >> annotation [ + - ^ self ] diff --git a/src/FAST-CSS-Model/FASTCSSUnaryQuery.class.st b/src/FAST-CSS-Model/FASTCSSUnaryQuery.class.st index 8d7bbc4..8fb23e4 100644 --- a/src/FAST-CSS-Model/FASTCSSUnaryQuery.class.st +++ b/src/FAST-CSS-Model/FASTCSSUnaryQuery.class.st @@ -1,6 +1,21 @@ +" +## Relations +====================== + +### Children +| Relation | Origin | Opposite | Type | Comment | +|---| +| `childrenNode` | `FASTCSSUnaryQuery` | `unaryQueryOwner` | `FASTCSSEntity` | | + + + +" Class { #name : 'FASTCSSUnaryQuery', #superclass : 'FASTCSSEntity', + #instVars : [ + '#childrenNode => FMOne type: #FASTCSSEntity opposite: #unaryQueryOwner' + ], #category : 'FAST-CSS-Model-Entities', #package : 'FAST-CSS-Model', #tag : 'Entities' @@ -9,8 +24,25 @@ Class { { #category : 'meta' } FASTCSSUnaryQuery class >> annotation [ + - ^ self +] + +{ #category : 'accessing' } +FASTCSSUnaryQuery >> childrenNode [ + "Relation named: #childrenNode type: #FASTCSSEntity opposite: #unaryQueryOwner" + + + + ^ childrenNode +] + +{ #category : 'accessing' } +FASTCSSUnaryQuery >> childrenNode: anObject [ + + + + childrenNode := anObject ] diff --git a/src/FAST-CSS-Model/FASTCSSUnit.class.st b/src/FAST-CSS-Model/FASTCSSUnit.class.st index f869167..c5f0fc4 100644 --- a/src/FAST-CSS-Model/FASTCSSUnit.class.st +++ b/src/FAST-CSS-Model/FASTCSSUnit.class.st @@ -9,8 +9,8 @@ Class { { #category : 'meta' } FASTCSSUnit class >> annotation [ + - ^ self ] diff --git a/src/FAST-CSS-Model/FASTCSSUniversalSelector.class.st b/src/FAST-CSS-Model/FASTCSSUniversalSelector.class.st index 4aba803..236451e 100644 --- a/src/FAST-CSS-Model/FASTCSSUniversalSelector.class.st +++ b/src/FAST-CSS-Model/FASTCSSUniversalSelector.class.st @@ -9,8 +9,8 @@ Class { { #category : 'meta' } FASTCSSUniversalSelector class >> annotation [ + - ^ self ] diff --git a/src/FAST-CSS-TestsGenerated/FASTCSSImporterTest.class.st b/src/FAST-CSS-TestsGenerated/FASTCSSImporterTest.class.st new file mode 100644 index 0000000..93ff63c --- /dev/null +++ b/src/FAST-CSS-TestsGenerated/FASTCSSImporterTest.class.st @@ -0,0 +1,8276 @@ +Class { + #name : 'FASTCSSImporterTest', + #superclass : 'TSFASTAbstractImporterTest', + #category : 'FAST-CSS-TestsGenerated', + #package : 'FAST-CSS-TestsGenerated' +} + +{ #category : 'tests' } +FASTCSSImporterTest >> testGeneratedAttributeSelectors [ + + "Generated as regression test by TSFASTImporterTestGenerator>>#generateTestNamed:fromCode:protocol: + Regenerate executing: self regenerateTest: #testGeneratedAttributeSelectors " + + self parse: '[a] {} +[b=c] {} +[d~=e] {} +a[b] {};'. + + self assert: (fast allWithType: FASTCSSAttributeName) size equals: 4. + self assert: (fast allWithType: FASTCSSAttributeSelector) size equals: 4. + self assert: (fast allWithType: FASTCSSBlock) size equals: 4. + self assert: (fast allWithType: FASTCSSERROR) size equals: 1. + self assert: (fast allWithType: FASTCSSPlainValue) size equals: 2. + self assert: (fast allWithType: FASTCSSRuleSet) size equals: 4. + self assert: (fast allWithType: FASTCSSSelectors) size equals: 4. + self assert: (fast allWithType: FASTCSSStylesheet) size equals: 1. + self assert: (fast allWithType: FASTCSSTagName) size equals: 1. + + stack push: fast rootEntities anyOne. + self assert: self topEntity sourceCode equals: '[a] {} +[b=c] {} +[d~=e] {} +a[b] {};' withPlatformLineEndings. + self assert: (self topEntity isOfType: FASTCSSStylesheet). + self assert: (self topEntity isOfType: FamixTHasImmediateSource). + self assert: (self topEntity isOfType: FamixTSourceAnchor). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 5. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: '[a] {}'. + self assert: (self topEntity isOfType: FASTCSSRuleSet). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 2. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: '[a]'. + self assert: (self topEntity isOfType: FASTCSSSelectors). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 1. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: '[a]'. + self assert: (self topEntity isOfType: FASTCSSAttributeSelector). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 1. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: 'a'. + self assert: (self topEntity isOfType: FASTCSSAttributeName). + stack pop. + stack pop. + stack pop. + + stack push: (stack top childrenNodes at: 2). + self assert: self topEntity sourceCode equals: '{}'. + self assert: (self topEntity isOfType: FASTCSSBlock). + stack pop. + stack pop. + + stack push: (stack top childrenNodes at: 2). + self assert: self topEntity sourceCode equals: '[b=c] {}'. + self assert: (self topEntity isOfType: FASTCSSRuleSet). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 2. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: '[b=c]'. + self assert: (self topEntity isOfType: FASTCSSSelectors). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 1. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: '[b=c]'. + self assert: (self topEntity isOfType: FASTCSSAttributeSelector). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 2. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: 'b'. + self assert: (self topEntity isOfType: FASTCSSAttributeName). + stack pop. + + stack push: (stack top childrenNodes at: 2). + self assert: self topEntity sourceCode equals: 'c'. + self assert: (self topEntity isOfType: FASTCSSPlainValue). + stack pop. + stack pop. + stack pop. + + stack push: (stack top childrenNodes at: 2). + self assert: self topEntity sourceCode equals: '{}'. + self assert: (self topEntity isOfType: FASTCSSBlock). + stack pop. + stack pop. + + stack push: (stack top childrenNodes at: 3). + self assert: self topEntity sourceCode equals: '[d~=e] {}'. + self assert: (self topEntity isOfType: FASTCSSRuleSet). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 2. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: '[d~=e]'. + self assert: (self topEntity isOfType: FASTCSSSelectors). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 1. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: '[d~=e]'. + self assert: (self topEntity isOfType: FASTCSSAttributeSelector). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 2. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: 'd'. + self assert: (self topEntity isOfType: FASTCSSAttributeName). + stack pop. + + stack push: (stack top childrenNodes at: 2). + self assert: self topEntity sourceCode equals: 'e'. + self assert: (self topEntity isOfType: FASTCSSPlainValue). + stack pop. + stack pop. + stack pop. + + stack push: (stack top childrenNodes at: 2). + self assert: self topEntity sourceCode equals: '{}'. + self assert: (self topEntity isOfType: FASTCSSBlock). + stack pop. + stack pop. + + stack push: (stack top childrenNodes at: 4). + self assert: self topEntity sourceCode equals: 'a[b] {}'. + self assert: (self topEntity isOfType: FASTCSSRuleSet). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 2. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: 'a[b]'. + self assert: (self topEntity isOfType: FASTCSSSelectors). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 1. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: 'a[b]'. + self assert: (self topEntity isOfType: FASTCSSAttributeSelector). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 2. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: 'a'. + self assert: (self topEntity isOfType: FASTCSSTagName). + stack pop. + + stack push: (stack top childrenNodes at: 2). + self assert: self topEntity sourceCode equals: 'b'. + self assert: (self topEntity isOfType: FASTCSSAttributeName). + stack pop. + stack pop. + stack pop. + + stack push: (stack top childrenNodes at: 2). + self assert: self topEntity sourceCode equals: '{}'. + self assert: (self topEntity isOfType: FASTCSSBlock). + stack pop. + stack pop. + + stack push: (stack top childrenNodes at: 5). + self assert: self topEntity sourceCode equals: ''. + self assert: (self topEntity isOfType: FASTCSSERROR). + self assert: (self topEntity isOfType: FamixTHasImmediateSource). + self assert: (self topEntity isOfType: FamixTSourceAnchor). + stack pop. + self assert: self topEntity source equals: '[a] {} +[b=c] {} +[d~=e] {} +a[b] {};' withPlatformLineEndings +] + +{ #category : 'tests' } +FASTCSSImporterTest >> testGeneratedCallsWhereEachArgumentHasMultipleValues [ + + "Generated as regression test by TSFASTImporterTestGenerator>>#generateTestNamed:fromCode:protocol: + Regenerate executing: self regenerateTest: #testGeneratedCallsWhereEachArgumentHasMultipleValues " + + self parse: 'div { + background: repeating-linear-gradient(red, orange 50px); + clip-path: polygon(50% 0%, 60% 40%, 100% 50%, 60% 60%, 50% 100%, 40% 60%, 0% 50%, 40% 40%); +};'. + + self assert: (fast allWithType: FASTCSSArguments) size equals: 2. + self assert: (fast allWithType: FASTCSSBlock) size equals: 1. + self assert: (fast allWithType: FASTCSSCallExpression) size equals: 2. + self assert: (fast allWithType: FASTCSSDeclaration) size equals: 2. + self assert: (fast allWithType: FASTCSSERROR) size equals: 1. + self assert: (fast allWithType: FASTCSSFunctionName) size equals: 2. + self assert: (fast allWithType: FASTCSSIntegerValue) size equals: 17. + self assert: (fast allWithType: FASTCSSPlainValue) size equals: 2. + self assert: (fast allWithType: FASTCSSPropertyName) size equals: 2. + self assert: (fast allWithType: FASTCSSRuleSet) size equals: 1. + self assert: (fast allWithType: FASTCSSSelectors) size equals: 1. + self assert: (fast allWithType: FASTCSSStylesheet) size equals: 1. + self assert: (fast allWithType: FASTCSSTagName) size equals: 1. + self assert: (fast allWithType: FASTCSSUnit) size equals: 17. + + stack push: fast rootEntities anyOne. + self assert: self topEntity sourceCode equals: 'div { + background: repeating-linear-gradient(red, orange 50px); + clip-path: polygon(50% 0%, 60% 40%, 100% 50%, 60% 60%, 50% 100%, 40% 60%, 0% 50%, 40% 40%); +};' withPlatformLineEndings. + self assert: (self topEntity isOfType: FASTCSSStylesheet). + self assert: (self topEntity isOfType: FamixTHasImmediateSource). + self assert: (self topEntity isOfType: FamixTSourceAnchor). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 2. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: 'div { + background: repeating-linear-gradient(red, orange 50px); + clip-path: polygon(50% 0%, 60% 40%, 100% 50%, 60% 60%, 50% 100%, 40% 60%, 0% 50%, 40% 40%); +}' withPlatformLineEndings. + self assert: (self topEntity isOfType: FASTCSSRuleSet). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 2. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: 'div'. + self assert: (self topEntity isOfType: FASTCSSSelectors). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 1. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: 'div'. + self assert: (self topEntity isOfType: FASTCSSTagName). + stack pop. + stack pop. + + stack push: (stack top childrenNodes at: 2). + self assert: self topEntity sourceCode equals: '{ + background: repeating-linear-gradient(red, orange 50px); + clip-path: polygon(50% 0%, 60% 40%, 100% 50%, 60% 60%, 50% 100%, 40% 60%, 0% 50%, 40% 40%); +}' withPlatformLineEndings. + self assert: (self topEntity isOfType: FASTCSSBlock). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 2. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: 'background: repeating-linear-gradient(red, orange 50px);'. + self assert: (self topEntity isOfType: FASTCSSDeclaration). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 2. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: 'background'. + self assert: (self topEntity isOfType: FASTCSSPropertyName). + stack pop. + + stack push: (stack top childrenNodes at: 2). + self assert: self topEntity sourceCode equals: 'repeating-linear-gradient(red, orange 50px)'. + self assert: (self topEntity isOfType: FASTCSSCallExpression). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 2. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: 'repeating-linear-gradient'. + self assert: (self topEntity isOfType: FASTCSSFunctionName). + stack pop. + + stack push: (stack top childrenNodes at: 2). + self assert: self topEntity sourceCode equals: '(red, orange 50px)'. + self assert: (self topEntity isOfType: FASTCSSArguments). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 3. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: 'red'. + self assert: (self topEntity isOfType: FASTCSSPlainValue). + stack pop. + + stack push: (stack top childrenNodes at: 2). + self assert: self topEntity sourceCode equals: 'orange'. + self assert: (self topEntity isOfType: FASTCSSPlainValue). + stack pop. + + stack push: (stack top childrenNodes at: 3). + self assert: self topEntity sourceCode equals: '50px'. + self assert: (self topEntity isOfType: FASTCSSIntegerValue). + + "Testing value of monovalue relation childrenNode" + self assert: self topEntity childrenNode isNotNil. + + stack push: self topEntity childrenNode. + self assert: self topEntity sourceCode equals: 'px'. + self assert: (self topEntity isOfType: FASTCSSUnit). + stack pop. + stack pop. + stack pop. + stack pop. + stack pop. + + stack push: (stack top childrenNodes at: 2). + self assert: self topEntity sourceCode equals: 'clip-path: polygon(50% 0%, 60% 40%, 100% 50%, 60% 60%, 50% 100%, 40% 60%, 0% 50%, 40% 40%);'. + self assert: (self topEntity isOfType: FASTCSSDeclaration). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 2. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: 'clip-path'. + self assert: (self topEntity isOfType: FASTCSSPropertyName). + stack pop. + + stack push: (stack top childrenNodes at: 2). + self assert: self topEntity sourceCode equals: 'polygon(50% 0%, 60% 40%, 100% 50%, 60% 60%, 50% 100%, 40% 60%, 0% 50%, 40% 40%)'. + self assert: (self topEntity isOfType: FASTCSSCallExpression). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 2. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: 'polygon'. + self assert: (self topEntity isOfType: FASTCSSFunctionName). + stack pop. + + stack push: (stack top childrenNodes at: 2). + self assert: self topEntity sourceCode equals: '(50% 0%, 60% 40%, 100% 50%, 60% 60%, 50% 100%, 40% 60%, 0% 50%, 40% 40%)'. + self assert: (self topEntity isOfType: FASTCSSArguments). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 16. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: '50%'. + self assert: (self topEntity isOfType: FASTCSSIntegerValue). + + "Testing value of monovalue relation childrenNode" + self assert: self topEntity childrenNode isNotNil. + + stack push: self topEntity childrenNode. + self assert: self topEntity sourceCode equals: '%'. + self assert: (self topEntity isOfType: FASTCSSUnit). + stack pop. + stack pop. + + stack push: (stack top childrenNodes at: 2). + self assert: self topEntity sourceCode equals: '0%'. + self assert: (self topEntity isOfType: FASTCSSIntegerValue). + + "Testing value of monovalue relation childrenNode" + self assert: self topEntity childrenNode isNotNil. + + stack push: self topEntity childrenNode. + self assert: self topEntity sourceCode equals: '%'. + self assert: (self topEntity isOfType: FASTCSSUnit). + stack pop. + stack pop. + + stack push: (stack top childrenNodes at: 3). + self assert: self topEntity sourceCode equals: '60%'. + self assert: (self topEntity isOfType: FASTCSSIntegerValue). + + "Testing value of monovalue relation childrenNode" + self assert: self topEntity childrenNode isNotNil. + + stack push: self topEntity childrenNode. + self assert: self topEntity sourceCode equals: '%'. + self assert: (self topEntity isOfType: FASTCSSUnit). + stack pop. + stack pop. + + stack push: (stack top childrenNodes at: 4). + self assert: self topEntity sourceCode equals: '40%'. + self assert: (self topEntity isOfType: FASTCSSIntegerValue). + + "Testing value of monovalue relation childrenNode" + self assert: self topEntity childrenNode isNotNil. + + stack push: self topEntity childrenNode. + self assert: self topEntity sourceCode equals: '%'. + self assert: (self topEntity isOfType: FASTCSSUnit). + stack pop. + stack pop. + + stack push: (stack top childrenNodes at: 5). + self assert: self topEntity sourceCode equals: '100%'. + self assert: (self topEntity isOfType: FASTCSSIntegerValue). + + "Testing value of monovalue relation childrenNode" + self assert: self topEntity childrenNode isNotNil. + + stack push: self topEntity childrenNode. + self assert: self topEntity sourceCode equals: '%'. + self assert: (self topEntity isOfType: FASTCSSUnit). + stack pop. + stack pop. + + stack push: (stack top childrenNodes at: 6). + self assert: self topEntity sourceCode equals: '50%'. + self assert: (self topEntity isOfType: FASTCSSIntegerValue). + + "Testing value of monovalue relation childrenNode" + self assert: self topEntity childrenNode isNotNil. + + stack push: self topEntity childrenNode. + self assert: self topEntity sourceCode equals: '%'. + self assert: (self topEntity isOfType: FASTCSSUnit). + stack pop. + stack pop. + + stack push: (stack top childrenNodes at: 7). + self assert: self topEntity sourceCode equals: '60%'. + self assert: (self topEntity isOfType: FASTCSSIntegerValue). + + "Testing value of monovalue relation childrenNode" + self assert: self topEntity childrenNode isNotNil. + + stack push: self topEntity childrenNode. + self assert: self topEntity sourceCode equals: '%'. + self assert: (self topEntity isOfType: FASTCSSUnit). + stack pop. + stack pop. + + stack push: (stack top childrenNodes at: 8). + self assert: self topEntity sourceCode equals: '60%'. + self assert: (self topEntity isOfType: FASTCSSIntegerValue). + + "Testing value of monovalue relation childrenNode" + self assert: self topEntity childrenNode isNotNil. + + stack push: self topEntity childrenNode. + self assert: self topEntity sourceCode equals: '%'. + self assert: (self topEntity isOfType: FASTCSSUnit). + stack pop. + stack pop. + + stack push: (stack top childrenNodes at: 9). + self assert: self topEntity sourceCode equals: '50%'. + self assert: (self topEntity isOfType: FASTCSSIntegerValue). + + "Testing value of monovalue relation childrenNode" + self assert: self topEntity childrenNode isNotNil. + + stack push: self topEntity childrenNode. + self assert: self topEntity sourceCode equals: '%'. + self assert: (self topEntity isOfType: FASTCSSUnit). + stack pop. + stack pop. + + stack push: (stack top childrenNodes at: 10). + self assert: self topEntity sourceCode equals: '100%'. + self assert: (self topEntity isOfType: FASTCSSIntegerValue). + + "Testing value of monovalue relation childrenNode" + self assert: self topEntity childrenNode isNotNil. + + stack push: self topEntity childrenNode. + self assert: self topEntity sourceCode equals: '%'. + self assert: (self topEntity isOfType: FASTCSSUnit). + stack pop. + stack pop. + + stack push: (stack top childrenNodes at: 11). + self assert: self topEntity sourceCode equals: '40%'. + self assert: (self topEntity isOfType: FASTCSSIntegerValue). + + "Testing value of monovalue relation childrenNode" + self assert: self topEntity childrenNode isNotNil. + + stack push: self topEntity childrenNode. + self assert: self topEntity sourceCode equals: '%'. + self assert: (self topEntity isOfType: FASTCSSUnit). + stack pop. + stack pop. + + stack push: (stack top childrenNodes at: 12). + self assert: self topEntity sourceCode equals: '60%'. + self assert: (self topEntity isOfType: FASTCSSIntegerValue). + + "Testing value of monovalue relation childrenNode" + self assert: self topEntity childrenNode isNotNil. + + stack push: self topEntity childrenNode. + self assert: self topEntity sourceCode equals: '%'. + self assert: (self topEntity isOfType: FASTCSSUnit). + stack pop. + stack pop. + + stack push: (stack top childrenNodes at: 13). + self assert: self topEntity sourceCode equals: '0%'. + self assert: (self topEntity isOfType: FASTCSSIntegerValue). + + "Testing value of monovalue relation childrenNode" + self assert: self topEntity childrenNode isNotNil. + + stack push: self topEntity childrenNode. + self assert: self topEntity sourceCode equals: '%'. + self assert: (self topEntity isOfType: FASTCSSUnit). + stack pop. + stack pop. + + stack push: (stack top childrenNodes at: 14). + self assert: self topEntity sourceCode equals: '50%'. + self assert: (self topEntity isOfType: FASTCSSIntegerValue). + + "Testing value of monovalue relation childrenNode" + self assert: self topEntity childrenNode isNotNil. + + stack push: self topEntity childrenNode. + self assert: self topEntity sourceCode equals: '%'. + self assert: (self topEntity isOfType: FASTCSSUnit). + stack pop. + stack pop. + + stack push: (stack top childrenNodes at: 15). + self assert: self topEntity sourceCode equals: '40%'. + self assert: (self topEntity isOfType: FASTCSSIntegerValue). + + "Testing value of monovalue relation childrenNode" + self assert: self topEntity childrenNode isNotNil. + + stack push: self topEntity childrenNode. + self assert: self topEntity sourceCode equals: '%'. + self assert: (self topEntity isOfType: FASTCSSUnit). + stack pop. + stack pop. + + stack push: (stack top childrenNodes at: 16). + self assert: self topEntity sourceCode equals: '40%'. + self assert: (self topEntity isOfType: FASTCSSIntegerValue). + + "Testing value of monovalue relation childrenNode" + self assert: self topEntity childrenNode isNotNil. + + stack push: self topEntity childrenNode. + self assert: self topEntity sourceCode equals: '%'. + self assert: (self topEntity isOfType: FASTCSSUnit). + stack pop. + stack pop. + stack pop. + stack pop. + stack pop. + stack pop. + stack pop. + + stack push: (stack top childrenNodes at: 2). + self assert: self topEntity sourceCode equals: ''. + self assert: (self topEntity isOfType: FASTCSSERROR). + self assert: (self topEntity isOfType: FamixTHasImmediateSource). + self assert: (self topEntity isOfType: FamixTSourceAnchor). + stack pop. + self assert: self topEntity source equals: 'div { + background: repeating-linear-gradient(red, orange 50px); + clip-path: polygon(50% 0%, 60% 40%, 100% 50%, 60% 60%, 50% 100%, 40% 60%, 0% 50%, 40% 40%); +};' withPlatformLineEndings +] + +{ #category : 'tests' } +FASTCSSImporterTest >> testGeneratedCharsetStatements [ + + "Generated as regression test by TSFASTImporterTestGenerator>>#generateTestNamed:fromCode:protocol: + Regenerate executing: self regenerateTest: #testGeneratedCharsetStatements " + + self parse: '@charset "utf-8";;'. + + self assert: (fast allWithType: FASTCSSCharsetStatement) size equals: 1. + self assert: (fast allWithType: FASTCSSERROR) size equals: 1. + self assert: (fast allWithType: FASTCSSStringContent) size equals: 1. + self assert: (fast allWithType: FASTCSSStringValue) size equals: 1. + self assert: (fast allWithType: FASTCSSStylesheet) size equals: 1. + + stack push: fast rootEntities anyOne. + self assert: self topEntity sourceCode equals: '@charset "utf-8";;'. + self assert: (self topEntity isOfType: FASTCSSStylesheet). + self assert: (self topEntity isOfType: FamixTHasImmediateSource). + self assert: (self topEntity isOfType: FamixTSourceAnchor). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 2. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: '@charset "utf-8";'. + self assert: (self topEntity isOfType: FASTCSSCharsetStatement). + + "Testing value of monovalue relation childrenNode" + self assert: self topEntity childrenNode isNotNil. + + stack push: self topEntity childrenNode. + self assert: self topEntity sourceCode equals: '"utf-8"'. + self assert: (self topEntity isOfType: FASTCSSStringValue). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 1. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: 'utf-8'. + self assert: (self topEntity isOfType: FASTCSSStringContent). + stack pop. + stack pop. + stack pop. + + stack push: (stack top childrenNodes at: 2). + self assert: self topEntity sourceCode equals: ''. + self assert: (self topEntity isOfType: FASTCSSERROR). + self assert: (self topEntity isOfType: FamixTHasImmediateSource). + self assert: (self topEntity isOfType: FamixTSourceAnchor). + stack pop. + self assert: self topEntity source equals: '@charset "utf-8";;' +] + +{ #category : 'tests' } +FASTCSSImporterTest >> testGeneratedChildSelectors [ + + "Generated as regression test by TSFASTImporterTestGenerator>>#generateTestNamed:fromCode:protocol: + Regenerate executing: self regenerateTest: #testGeneratedChildSelectors " + + self parse: 'a > b {} +c > d > e {};'. + + self assert: (fast allWithType: FASTCSSBlock) size equals: 2. + self assert: (fast allWithType: FASTCSSChildSelector) size equals: 3. + self assert: (fast allWithType: FASTCSSERROR) size equals: 1. + self assert: (fast allWithType: FASTCSSRuleSet) size equals: 2. + self assert: (fast allWithType: FASTCSSSelectors) size equals: 2. + self assert: (fast allWithType: FASTCSSStylesheet) size equals: 1. + self assert: (fast allWithType: FASTCSSTagName) size equals: 5. + + stack push: fast rootEntities anyOne. + self assert: self topEntity sourceCode equals: 'a > b {} +c > d > e {};' withPlatformLineEndings. + self assert: (self topEntity isOfType: FASTCSSStylesheet). + self assert: (self topEntity isOfType: FamixTHasImmediateSource). + self assert: (self topEntity isOfType: FamixTSourceAnchor). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 3. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: 'a > b {}'. + self assert: (self topEntity isOfType: FASTCSSRuleSet). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 2. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: 'a > b'. + self assert: (self topEntity isOfType: FASTCSSSelectors). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 1. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: 'a > b'. + self assert: (self topEntity isOfType: FASTCSSChildSelector). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 2. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: 'a'. + self assert: (self topEntity isOfType: FASTCSSTagName). + stack pop. + + stack push: (stack top childrenNodes at: 2). + self assert: self topEntity sourceCode equals: 'b'. + self assert: (self topEntity isOfType: FASTCSSTagName). + stack pop. + stack pop. + stack pop. + + stack push: (stack top childrenNodes at: 2). + self assert: self topEntity sourceCode equals: '{}'. + self assert: (self topEntity isOfType: FASTCSSBlock). + stack pop. + stack pop. + + stack push: (stack top childrenNodes at: 2). + self assert: self topEntity sourceCode equals: 'c > d > e {}'. + self assert: (self topEntity isOfType: FASTCSSRuleSet). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 2. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: 'c > d > e'. + self assert: (self topEntity isOfType: FASTCSSSelectors). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 1. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: 'c > d > e'. + self assert: (self topEntity isOfType: FASTCSSChildSelector). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 2. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: 'c > d'. + self assert: (self topEntity isOfType: FASTCSSChildSelector). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 2. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: 'c'. + self assert: (self topEntity isOfType: FASTCSSTagName). + stack pop. + + stack push: (stack top childrenNodes at: 2). + self assert: self topEntity sourceCode equals: 'd'. + self assert: (self topEntity isOfType: FASTCSSTagName). + stack pop. + stack pop. + + stack push: (stack top childrenNodes at: 2). + self assert: self topEntity sourceCode equals: 'e'. + self assert: (self topEntity isOfType: FASTCSSTagName). + stack pop. + stack pop. + stack pop. + + stack push: (stack top childrenNodes at: 2). + self assert: self topEntity sourceCode equals: '{}'. + self assert: (self topEntity isOfType: FASTCSSBlock). + stack pop. + stack pop. + + stack push: (stack top childrenNodes at: 3). + self assert: self topEntity sourceCode equals: ''. + self assert: (self topEntity isOfType: FASTCSSERROR). + self assert: (self topEntity isOfType: FamixTHasImmediateSource). + self assert: (self topEntity isOfType: FamixTSourceAnchor). + stack pop. + self assert: self topEntity source equals: 'a > b {} +c > d > e {};' withPlatformLineEndings +] + +{ #category : 'tests' } +FASTCSSImporterTest >> testGeneratedClassSelectors [ + + "Generated as regression test by TSFASTImporterTestGenerator>>#generateTestNamed:fromCode:protocol: + Regenerate executing: self regenerateTest: #testGeneratedClassSelectors " + + self parse: '.class-a {} +div.class-b, .class-c.class-d {};'. + + self assert: (fast allWithType: FASTCSSBlock) size equals: 2. + self assert: (fast allWithType: FASTCSSClassName) size equals: 4. + self assert: (fast allWithType: FASTCSSClassSelector) size equals: 4. + self assert: (fast allWithType: FASTCSSERROR) size equals: 1. + self assert: (fast allWithType: FASTCSSIdentifier) size equals: 4. + self assert: (fast allWithType: FASTCSSRuleSet) size equals: 2. + self assert: (fast allWithType: FASTCSSSelectors) size equals: 2. + self assert: (fast allWithType: FASTCSSStylesheet) size equals: 1. + self assert: (fast allWithType: FASTCSSTagName) size equals: 1. + + stack push: fast rootEntities anyOne. + self assert: self topEntity sourceCode equals: '.class-a {} +div.class-b, .class-c.class-d {};' withPlatformLineEndings. + self assert: (self topEntity isOfType: FASTCSSStylesheet). + self assert: (self topEntity isOfType: FamixTHasImmediateSource). + self assert: (self topEntity isOfType: FamixTSourceAnchor). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 3. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: '.class-a {}'. + self assert: (self topEntity isOfType: FASTCSSRuleSet). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 2. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: '.class-a'. + self assert: (self topEntity isOfType: FASTCSSSelectors). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 1. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: '.class-a'. + self assert: (self topEntity isOfType: FASTCSSClassSelector). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 1. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: 'class-a'. + self assert: (self topEntity isOfType: FASTCSSClassName). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 1. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: 'class-a'. + self assert: (self topEntity isOfType: FASTCSSIdentifier). + stack pop. + stack pop. + stack pop. + stack pop. + + stack push: (stack top childrenNodes at: 2). + self assert: self topEntity sourceCode equals: '{}'. + self assert: (self topEntity isOfType: FASTCSSBlock). + stack pop. + stack pop. + + stack push: (stack top childrenNodes at: 2). + self assert: self topEntity sourceCode equals: 'div.class-b, .class-c.class-d {}'. + self assert: (self topEntity isOfType: FASTCSSRuleSet). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 2. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: 'div.class-b, .class-c.class-d'. + self assert: (self topEntity isOfType: FASTCSSSelectors). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 2. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: 'div.class-b'. + self assert: (self topEntity isOfType: FASTCSSClassSelector). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 2. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: 'div'. + self assert: (self topEntity isOfType: FASTCSSTagName). + stack pop. + + stack push: (stack top childrenNodes at: 2). + self assert: self topEntity sourceCode equals: 'class-b'. + self assert: (self topEntity isOfType: FASTCSSClassName). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 1. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: 'class-b'. + self assert: (self topEntity isOfType: FASTCSSIdentifier). + stack pop. + stack pop. + stack pop. + + stack push: (stack top childrenNodes at: 2). + self assert: self topEntity sourceCode equals: '.class-c.class-d'. + self assert: (self topEntity isOfType: FASTCSSClassSelector). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 2. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: '.class-c'. + self assert: (self topEntity isOfType: FASTCSSClassSelector). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 1. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: 'class-c'. + self assert: (self topEntity isOfType: FASTCSSClassName). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 1. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: 'class-c'. + self assert: (self topEntity isOfType: FASTCSSIdentifier). + stack pop. + stack pop. + stack pop. + + stack push: (stack top childrenNodes at: 2). + self assert: self topEntity sourceCode equals: 'class-d'. + self assert: (self topEntity isOfType: FASTCSSClassName). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 1. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: 'class-d'. + self assert: (self topEntity isOfType: FASTCSSIdentifier). + stack pop. + stack pop. + stack pop. + stack pop. + + stack push: (stack top childrenNodes at: 2). + self assert: self topEntity sourceCode equals: '{}'. + self assert: (self topEntity isOfType: FASTCSSBlock). + stack pop. + stack pop. + + stack push: (stack top childrenNodes at: 3). + self assert: self topEntity sourceCode equals: ''. + self assert: (self topEntity isOfType: FASTCSSERROR). + self assert: (self topEntity isOfType: FamixTHasImmediateSource). + self assert: (self topEntity isOfType: FamixTSourceAnchor). + stack pop. + self assert: self topEntity source equals: '.class-a {} +div.class-b, .class-c.class-d {};' withPlatformLineEndings +] + +{ #category : 'tests' } +FASTCSSImporterTest >> testGeneratedColorLiterals [ + + "Generated as regression test by TSFASTImporterTestGenerator>>#generateTestNamed:fromCode:protocol: + Regenerate executing: self regenerateTest: #testGeneratedColorLiterals " + + self parse: 'a { + b: #fafd04; + c: #fafd0401; +};'. + + self assert: (fast allWithType: FASTCSSBlock) size equals: 1. + self assert: (fast allWithType: FASTCSSColorValue) size equals: 2. + self assert: (fast allWithType: FASTCSSDeclaration) size equals: 2. + self assert: (fast allWithType: FASTCSSERROR) size equals: 1. + self assert: (fast allWithType: FASTCSSPropertyName) size equals: 2. + self assert: (fast allWithType: FASTCSSRuleSet) size equals: 1. + self assert: (fast allWithType: FASTCSSSelectors) size equals: 1. + self assert: (fast allWithType: FASTCSSStylesheet) size equals: 1. + self assert: (fast allWithType: FASTCSSTagName) size equals: 1. + + stack push: fast rootEntities anyOne. + self assert: self topEntity sourceCode equals: 'a { + b: #fafd04; + c: #fafd0401; +};' withPlatformLineEndings. + self assert: (self topEntity isOfType: FASTCSSStylesheet). + self assert: (self topEntity isOfType: FamixTHasImmediateSource). + self assert: (self topEntity isOfType: FamixTSourceAnchor). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 2. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: 'a { + b: #fafd04; + c: #fafd0401; +}' withPlatformLineEndings. + self assert: (self topEntity isOfType: FASTCSSRuleSet). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 2. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: 'a'. + self assert: (self topEntity isOfType: FASTCSSSelectors). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 1. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: 'a'. + self assert: (self topEntity isOfType: FASTCSSTagName). + stack pop. + stack pop. + + stack push: (stack top childrenNodes at: 2). + self assert: self topEntity sourceCode equals: '{ + b: #fafd04; + c: #fafd0401; +}' withPlatformLineEndings. + self assert: (self topEntity isOfType: FASTCSSBlock). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 2. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: 'b: #fafd04;'. + self assert: (self topEntity isOfType: FASTCSSDeclaration). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 2. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: 'b'. + self assert: (self topEntity isOfType: FASTCSSPropertyName). + stack pop. + + stack push: (stack top childrenNodes at: 2). + self assert: self topEntity sourceCode equals: '#fafd04'. + self assert: (self topEntity isOfType: FASTCSSColorValue). + stack pop. + stack pop. + + stack push: (stack top childrenNodes at: 2). + self assert: self topEntity sourceCode equals: 'c: #fafd0401;'. + self assert: (self topEntity isOfType: FASTCSSDeclaration). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 2. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: 'c'. + self assert: (self topEntity isOfType: FASTCSSPropertyName). + stack pop. + + stack push: (stack top childrenNodes at: 2). + self assert: self topEntity sourceCode equals: '#fafd0401'. + self assert: (self topEntity isOfType: FASTCSSColorValue). + stack pop. + stack pop. + stack pop. + stack pop. + + stack push: (stack top childrenNodes at: 2). + self assert: self topEntity sourceCode equals: ''. + self assert: (self topEntity isOfType: FASTCSSERROR). + self assert: (self topEntity isOfType: FamixTHasImmediateSource). + self assert: (self topEntity isOfType: FamixTSourceAnchor). + stack pop. + self assert: self topEntity source equals: 'a { + b: #fafd04; + c: #fafd0401; +};' withPlatformLineEndings +] + +{ #category : 'tests' } +FASTCSSImporterTest >> testGeneratedCommentsRightAfterNumbers [ + + "Generated as regression test by TSFASTImporterTestGenerator>>#generateTestNamed:fromCode:protocol: + Regenerate executing: self regenerateTest: #testGeneratedCommentsRightAfterNumbers " + + self parse: '// A comment +a { + shape-outside: circle(20em/*=*/at 50% 50%); + shape-outside: inset(1em, 1em, 1em, 1em); +};'. + + self assert: (fast allWithType: FASTCSSArguments) size equals: 2. + self assert: (fast allWithType: FASTCSSBlock) size equals: 1. + self assert: (fast allWithType: FASTCSSCallExpression) size equals: 2. + self assert: (fast allWithType: FASTCSSComment) size equals: 1. + self assert: (fast allWithType: FASTCSSDeclaration) size equals: 2. + self assert: (fast allWithType: FASTCSSERROR) size equals: 1. + self assert: (fast allWithType: FASTCSSFunctionName) size equals: 2. + self assert: (fast allWithType: FASTCSSIntegerValue) size equals: 7. + self assert: (fast allWithType: FASTCSSJsComment) size equals: 1. + self assert: (fast allWithType: FASTCSSPlainValue) size equals: 1. + self assert: (fast allWithType: FASTCSSPropertyName) size equals: 2. + self assert: (fast allWithType: FASTCSSRuleSet) size equals: 1. + self assert: (fast allWithType: FASTCSSSelectors) size equals: 1. + self assert: (fast allWithType: FASTCSSStylesheet) size equals: 1. + self assert: (fast allWithType: FASTCSSTagName) size equals: 1. + self assert: (fast allWithType: FASTCSSUnit) size equals: 7. + + stack push: fast rootEntities anyOne. + self assert: self topEntity sourceCode equals: '// A comment +a { + shape-outside: circle(20em/*=*/at 50% 50%); + shape-outside: inset(1em, 1em, 1em, 1em); +};' withPlatformLineEndings. + self assert: (self topEntity isOfType: FASTCSSStylesheet). + self assert: (self topEntity isOfType: FamixTHasImmediateSource). + self assert: (self topEntity isOfType: FamixTSourceAnchor). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 3. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: '// A comment +'. + self assert: (self topEntity isOfType: FASTCSSJsComment). + stack pop. + + stack push: (stack top childrenNodes at: 2). + self assert: self topEntity sourceCode equals: 'a { + shape-outside: circle(20em/*=*/at 50% 50%); + shape-outside: inset(1em, 1em, 1em, 1em); +}' withPlatformLineEndings. + self assert: (self topEntity isOfType: FASTCSSRuleSet). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 2. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: 'a'. + self assert: (self topEntity isOfType: FASTCSSSelectors). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 1. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: 'a'. + self assert: (self topEntity isOfType: FASTCSSTagName). + stack pop. + stack pop. + + stack push: (stack top childrenNodes at: 2). + self assert: self topEntity sourceCode equals: '{ + shape-outside: circle(20em/*=*/at 50% 50%); + shape-outside: inset(1em, 1em, 1em, 1em); +}' withPlatformLineEndings. + self assert: (self topEntity isOfType: FASTCSSBlock). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 2. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: 'shape-outside: circle(20em/*=*/at 50% 50%);'. + self assert: (self topEntity isOfType: FASTCSSDeclaration). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 2. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: 'shape-outside'. + self assert: (self topEntity isOfType: FASTCSSPropertyName). + stack pop. + + stack push: (stack top childrenNodes at: 2). + self assert: self topEntity sourceCode equals: 'circle(20em/*=*/at 50% 50%)'. + self assert: (self topEntity isOfType: FASTCSSCallExpression). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 2. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: 'circle'. + self assert: (self topEntity isOfType: FASTCSSFunctionName). + stack pop. + + stack push: (stack top childrenNodes at: 2). + self assert: self topEntity sourceCode equals: '(20em/*=*/at 50% 50%)'. + self assert: (self topEntity isOfType: FASTCSSArguments). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 5. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: '20em'. + self assert: (self topEntity isOfType: FASTCSSIntegerValue). + + "Testing value of monovalue relation childrenNode" + self assert: self topEntity childrenNode isNotNil. + + stack push: self topEntity childrenNode. + self assert: self topEntity sourceCode equals: 'em'. + self assert: (self topEntity isOfType: FASTCSSUnit). + stack pop. + stack pop. + + stack push: (stack top childrenNodes at: 2). + self assert: self topEntity sourceCode equals: '/*=*/'. + self assert: (self topEntity isOfType: FASTCSSComment). + stack pop. + + stack push: (stack top childrenNodes at: 3). + self assert: self topEntity sourceCode equals: 'at'. + self assert: (self topEntity isOfType: FASTCSSPlainValue). + stack pop. + + stack push: (stack top childrenNodes at: 4). + self assert: self topEntity sourceCode equals: '50%'. + self assert: (self topEntity isOfType: FASTCSSIntegerValue). + + "Testing value of monovalue relation childrenNode" + self assert: self topEntity childrenNode isNotNil. + + stack push: self topEntity childrenNode. + self assert: self topEntity sourceCode equals: '%'. + self assert: (self topEntity isOfType: FASTCSSUnit). + stack pop. + stack pop. + + stack push: (stack top childrenNodes at: 5). + self assert: self topEntity sourceCode equals: '50%'. + self assert: (self topEntity isOfType: FASTCSSIntegerValue). + + "Testing value of monovalue relation childrenNode" + self assert: self topEntity childrenNode isNotNil. + + stack push: self topEntity childrenNode. + self assert: self topEntity sourceCode equals: '%'. + self assert: (self topEntity isOfType: FASTCSSUnit). + stack pop. + stack pop. + stack pop. + stack pop. + stack pop. + + stack push: (stack top childrenNodes at: 2). + self assert: self topEntity sourceCode equals: 'shape-outside: inset(1em, 1em, 1em, 1em);'. + self assert: (self topEntity isOfType: FASTCSSDeclaration). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 2. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: 'shape-outside'. + self assert: (self topEntity isOfType: FASTCSSPropertyName). + stack pop. + + stack push: (stack top childrenNodes at: 2). + self assert: self topEntity sourceCode equals: 'inset(1em, 1em, 1em, 1em)'. + self assert: (self topEntity isOfType: FASTCSSCallExpression). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 2. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: 'inset'. + self assert: (self topEntity isOfType: FASTCSSFunctionName). + stack pop. + + stack push: (stack top childrenNodes at: 2). + self assert: self topEntity sourceCode equals: '(1em, 1em, 1em, 1em)'. + self assert: (self topEntity isOfType: FASTCSSArguments). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 4. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: '1em'. + self assert: (self topEntity isOfType: FASTCSSIntegerValue). + + "Testing value of monovalue relation childrenNode" + self assert: self topEntity childrenNode isNotNil. + + stack push: self topEntity childrenNode. + self assert: self topEntity sourceCode equals: 'em'. + self assert: (self topEntity isOfType: FASTCSSUnit). + stack pop. + stack pop. + + stack push: (stack top childrenNodes at: 2). + self assert: self topEntity sourceCode equals: '1em'. + self assert: (self topEntity isOfType: FASTCSSIntegerValue). + + "Testing value of monovalue relation childrenNode" + self assert: self topEntity childrenNode isNotNil. + + stack push: self topEntity childrenNode. + self assert: self topEntity sourceCode equals: 'em'. + self assert: (self topEntity isOfType: FASTCSSUnit). + stack pop. + stack pop. + + stack push: (stack top childrenNodes at: 3). + self assert: self topEntity sourceCode equals: '1em'. + self assert: (self topEntity isOfType: FASTCSSIntegerValue). + + "Testing value of monovalue relation childrenNode" + self assert: self topEntity childrenNode isNotNil. + + stack push: self topEntity childrenNode. + self assert: self topEntity sourceCode equals: 'em'. + self assert: (self topEntity isOfType: FASTCSSUnit). + stack pop. + stack pop. + + stack push: (stack top childrenNodes at: 4). + self assert: self topEntity sourceCode equals: '1em'. + self assert: (self topEntity isOfType: FASTCSSIntegerValue). + + "Testing value of monovalue relation childrenNode" + self assert: self topEntity childrenNode isNotNil. + + stack push: self topEntity childrenNode. + self assert: self topEntity sourceCode equals: 'em'. + self assert: (self topEntity isOfType: FASTCSSUnit). + stack pop. + stack pop. + stack pop. + stack pop. + stack pop. + stack pop. + stack pop. + + stack push: (stack top childrenNodes at: 3). + self assert: self topEntity sourceCode equals: ''. + self assert: (self topEntity isOfType: FASTCSSERROR). + self assert: (self topEntity isOfType: FamixTHasImmediateSource). + self assert: (self topEntity isOfType: FamixTSourceAnchor). + stack pop. + self assert: self topEntity source equals: '// A comment +a { + shape-outside: circle(20em/*=*/at 50% 50%); + shape-outside: inset(1em, 1em, 1em, 1em); +};' withPlatformLineEndings +] + +{ #category : 'tests' } +FASTCSSImporterTest >> testGeneratedDeclarationsAtTheTopLevel [ + + "Generated as regression test by TSFASTImporterTestGenerator>>#generateTestNamed:fromCode:protocol: + Regenerate executing: self regenerateTest: #testGeneratedDeclarationsAtTheTopLevel " + + self parse: '--a-variable: -5px; +a-property: calc(5px + var(--a-variable));;'. + + self assert: (fast allWithType: FASTCSSArguments) size equals: 2. + self assert: (fast allWithType: FASTCSSBinaryExpression) size equals: 1. + self assert: (fast allWithType: FASTCSSCallExpression) size equals: 2. + self assert: (fast allWithType: FASTCSSDeclaration) size equals: 2. + self assert: (fast allWithType: FASTCSSERROR) size equals: 1. + self assert: (fast allWithType: FASTCSSFunctionName) size equals: 2. + self assert: (fast allWithType: FASTCSSIntegerValue) size equals: 2. + self assert: (fast allWithType: FASTCSSPlainValue) size equals: 1. + self assert: (fast allWithType: FASTCSSPropertyName) size equals: 2. + self assert: (fast allWithType: FASTCSSStylesheet) size equals: 1. + self assert: (fast allWithType: FASTCSSUnit) size equals: 2. + + stack push: fast rootEntities anyOne. + self assert: self topEntity sourceCode equals: '--a-variable: -5px; +a-property: calc(5px + var(--a-variable));;' withPlatformLineEndings. + self assert: (self topEntity isOfType: FASTCSSStylesheet). + self assert: (self topEntity isOfType: FamixTHasImmediateSource). + self assert: (self topEntity isOfType: FamixTSourceAnchor). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 3. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: '--a-variable: -5px;'. + self assert: (self topEntity isOfType: FASTCSSDeclaration). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 2. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: '--a-variable'. + self assert: (self topEntity isOfType: FASTCSSPropertyName). + stack pop. + + stack push: (stack top childrenNodes at: 2). + self assert: self topEntity sourceCode equals: '-5px'. + self assert: (self topEntity isOfType: FASTCSSIntegerValue). + + "Testing value of monovalue relation childrenNode" + self assert: self topEntity childrenNode isNotNil. + + stack push: self topEntity childrenNode. + self assert: self topEntity sourceCode equals: 'px'. + self assert: (self topEntity isOfType: FASTCSSUnit). + stack pop. + stack pop. + stack pop. + + stack push: (stack top childrenNodes at: 2). + self assert: self topEntity sourceCode equals: 'a-property: calc(5px + var(--a-variable));'. + self assert: (self topEntity isOfType: FASTCSSDeclaration). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 2. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: 'a-property'. + self assert: (self topEntity isOfType: FASTCSSPropertyName). + stack pop. + + stack push: (stack top childrenNodes at: 2). + self assert: self topEntity sourceCode equals: 'calc(5px + var(--a-variable))'. + self assert: (self topEntity isOfType: FASTCSSCallExpression). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 2. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: 'calc'. + self assert: (self topEntity isOfType: FASTCSSFunctionName). + stack pop. + + stack push: (stack top childrenNodes at: 2). + self assert: self topEntity sourceCode equals: '(5px + var(--a-variable))'. + self assert: (self topEntity isOfType: FASTCSSArguments). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 1. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: '5px + var(--a-variable)'. + self assert: (self topEntity isOfType: FASTCSSBinaryExpression). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 2. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: '5px'. + self assert: (self topEntity isOfType: FASTCSSIntegerValue). + + "Testing value of monovalue relation childrenNode" + self assert: self topEntity childrenNode isNotNil. + + stack push: self topEntity childrenNode. + self assert: self topEntity sourceCode equals: 'px'. + self assert: (self topEntity isOfType: FASTCSSUnit). + stack pop. + stack pop. + + stack push: (stack top childrenNodes at: 2). + self assert: self topEntity sourceCode equals: 'var(--a-variable)'. + self assert: (self topEntity isOfType: FASTCSSCallExpression). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 2. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: 'var'. + self assert: (self topEntity isOfType: FASTCSSFunctionName). + stack pop. + + stack push: (stack top childrenNodes at: 2). + self assert: self topEntity sourceCode equals: '(--a-variable)'. + self assert: (self topEntity isOfType: FASTCSSArguments). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 1. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: '--a-variable'. + self assert: (self topEntity isOfType: FASTCSSPlainValue). + stack pop. + stack pop. + stack pop. + stack pop. + stack pop. + stack pop. + stack pop. + + stack push: (stack top childrenNodes at: 3). + self assert: self topEntity sourceCode equals: ''. + self assert: (self topEntity isOfType: FASTCSSERROR). + self assert: (self topEntity isOfType: FamixTHasImmediateSource). + self assert: (self topEntity isOfType: FamixTSourceAnchor). + stack pop. + self assert: self topEntity source equals: '--a-variable: -5px; +a-property: calc(5px + var(--a-variable));;' withPlatformLineEndings +] + +{ #category : 'tests' } +FASTCSSImporterTest >> testGeneratedDeclarationsWithoutTrailingSemicolons [ + + "Generated as regression test by TSFASTImporterTestGenerator>>#generateTestNamed:fromCode:protocol: + Regenerate executing: self regenerateTest: #testGeneratedDeclarationsWithoutTrailingSemicolons " + + self parse: 'a { + b: c; + d: e +};'. + + self assert: (fast allWithType: FASTCSSBlock) size equals: 1. + self assert: (fast allWithType: FASTCSSDeclaration) size equals: 2. + self assert: (fast allWithType: FASTCSSERROR) size equals: 1. + self assert: (fast allWithType: FASTCSSPlainValue) size equals: 2. + self assert: (fast allWithType: FASTCSSPropertyName) size equals: 2. + self assert: (fast allWithType: FASTCSSRuleSet) size equals: 1. + self assert: (fast allWithType: FASTCSSSelectors) size equals: 1. + self assert: (fast allWithType: FASTCSSStylesheet) size equals: 1. + self assert: (fast allWithType: FASTCSSTagName) size equals: 1. + + stack push: fast rootEntities anyOne. + self assert: self topEntity sourceCode equals: 'a { + b: c; + d: e +};' withPlatformLineEndings. + self assert: (self topEntity isOfType: FASTCSSStylesheet). + self assert: (self topEntity isOfType: FamixTHasImmediateSource). + self assert: (self topEntity isOfType: FamixTSourceAnchor). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 2. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: 'a { + b: c; + d: e +}' withPlatformLineEndings. + self assert: (self topEntity isOfType: FASTCSSRuleSet). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 2. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: 'a'. + self assert: (self topEntity isOfType: FASTCSSSelectors). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 1. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: 'a'. + self assert: (self topEntity isOfType: FASTCSSTagName). + stack pop. + stack pop. + + stack push: (stack top childrenNodes at: 2). + self assert: self topEntity sourceCode equals: '{ + b: c; + d: e +}' withPlatformLineEndings. + self assert: (self topEntity isOfType: FASTCSSBlock). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 2. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: 'b: c;'. + self assert: (self topEntity isOfType: FASTCSSDeclaration). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 2. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: 'b'. + self assert: (self topEntity isOfType: FASTCSSPropertyName). + stack pop. + + stack push: (stack top childrenNodes at: 2). + self assert: self topEntity sourceCode equals: 'c'. + self assert: (self topEntity isOfType: FASTCSSPlainValue). + stack pop. + stack pop. + + stack push: (stack top childrenNodes at: 2). + self assert: self topEntity sourceCode equals: 'd: e'. + self assert: (self topEntity isOfType: FASTCSSDeclaration). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 2. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: 'd'. + self assert: (self topEntity isOfType: FASTCSSPropertyName). + stack pop. + + stack push: (stack top childrenNodes at: 2). + self assert: self topEntity sourceCode equals: 'e'. + self assert: (self topEntity isOfType: FASTCSSPlainValue). + stack pop. + stack pop. + stack pop. + stack pop. + + stack push: (stack top childrenNodes at: 2). + self assert: self topEntity sourceCode equals: ''. + self assert: (self topEntity isOfType: FASTCSSERROR). + self assert: (self topEntity isOfType: FamixTHasImmediateSource). + self assert: (self topEntity isOfType: FamixTSourceAnchor). + stack pop. + self assert: self topEntity source equals: 'a { + b: c; + d: e +};' withPlatformLineEndings +] + +{ #category : 'tests' } +FASTCSSImporterTest >> testGeneratedDescendantSelectors [ + + "Generated as regression test by TSFASTImporterTestGenerator>>#generateTestNamed:fromCode:protocol: + Regenerate executing: self regenerateTest: #testGeneratedDescendantSelectors " + + self parse: 'a b {} +c d e {} +f * {};'. + + self assert: (fast allWithType: FASTCSSBlock) size equals: 3. + self assert: (fast allWithType: FASTCSSDescendantSelector) size equals: 4. + self assert: (fast allWithType: FASTCSSERROR) size equals: 1. + self assert: (fast allWithType: FASTCSSRuleSet) size equals: 3. + self assert: (fast allWithType: FASTCSSSelectors) size equals: 3. + self assert: (fast allWithType: FASTCSSStylesheet) size equals: 1. + self assert: (fast allWithType: FASTCSSTagName) size equals: 6. + self assert: (fast allWithType: FASTCSSUniversalSelector) size equals: 1. + + stack push: fast rootEntities anyOne. + self assert: self topEntity sourceCode equals: 'a b {} +c d e {} +f * {};' withPlatformLineEndings. + self assert: (self topEntity isOfType: FASTCSSStylesheet). + self assert: (self topEntity isOfType: FamixTHasImmediateSource). + self assert: (self topEntity isOfType: FamixTSourceAnchor). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 4. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: 'a b {}'. + self assert: (self topEntity isOfType: FASTCSSRuleSet). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 2. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: 'a b'. + self assert: (self topEntity isOfType: FASTCSSSelectors). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 1. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: 'a b'. + self assert: (self topEntity isOfType: FASTCSSDescendantSelector). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 2. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: 'a'. + self assert: (self topEntity isOfType: FASTCSSTagName). + stack pop. + + stack push: (stack top childrenNodes at: 2). + self assert: self topEntity sourceCode equals: 'b'. + self assert: (self topEntity isOfType: FASTCSSTagName). + stack pop. + stack pop. + stack pop. + + stack push: (stack top childrenNodes at: 2). + self assert: self topEntity sourceCode equals: '{}'. + self assert: (self topEntity isOfType: FASTCSSBlock). + stack pop. + stack pop. + + stack push: (stack top childrenNodes at: 2). + self assert: self topEntity sourceCode equals: 'c d e {}'. + self assert: (self topEntity isOfType: FASTCSSRuleSet). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 2. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: 'c d e'. + self assert: (self topEntity isOfType: FASTCSSSelectors). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 1. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: 'c d e'. + self assert: (self topEntity isOfType: FASTCSSDescendantSelector). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 2. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: 'c d'. + self assert: (self topEntity isOfType: FASTCSSDescendantSelector). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 2. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: 'c'. + self assert: (self topEntity isOfType: FASTCSSTagName). + stack pop. + + stack push: (stack top childrenNodes at: 2). + self assert: self topEntity sourceCode equals: 'd'. + self assert: (self topEntity isOfType: FASTCSSTagName). + stack pop. + stack pop. + + stack push: (stack top childrenNodes at: 2). + self assert: self topEntity sourceCode equals: 'e'. + self assert: (self topEntity isOfType: FASTCSSTagName). + stack pop. + stack pop. + stack pop. + + stack push: (stack top childrenNodes at: 2). + self assert: self topEntity sourceCode equals: '{}'. + self assert: (self topEntity isOfType: FASTCSSBlock). + stack pop. + stack pop. + + stack push: (stack top childrenNodes at: 3). + self assert: self topEntity sourceCode equals: 'f * {}'. + self assert: (self topEntity isOfType: FASTCSSRuleSet). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 2. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: 'f *'. + self assert: (self topEntity isOfType: FASTCSSSelectors). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 1. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: 'f *'. + self assert: (self topEntity isOfType: FASTCSSDescendantSelector). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 2. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: 'f'. + self assert: (self topEntity isOfType: FASTCSSTagName). + stack pop. + + stack push: (stack top childrenNodes at: 2). + self assert: self topEntity sourceCode equals: '*'. + self assert: (self topEntity isOfType: FASTCSSUniversalSelector). + stack pop. + stack pop. + stack pop. + + stack push: (stack top childrenNodes at: 2). + self assert: self topEntity sourceCode equals: '{}'. + self assert: (self topEntity isOfType: FASTCSSBlock). + stack pop. + stack pop. + + stack push: (stack top childrenNodes at: 4). + self assert: self topEntity sourceCode equals: ''. + self assert: (self topEntity isOfType: FASTCSSERROR). + self assert: (self topEntity isOfType: FamixTHasImmediateSource). + self assert: (self topEntity isOfType: FamixTSourceAnchor). + stack pop. + self assert: self topEntity source equals: 'a b {} +c d e {} +f * {};' withPlatformLineEndings +] + +{ #category : 'tests' } +FASTCSSImporterTest >> testGeneratedEscapeSequences [ + + "Generated as regression test by TSFASTImporterTestGenerator>>#generateTestNamed:fromCode:protocol: + Regenerate executing: self regenerateTest: #testGeneratedEscapeSequences " + + self parse: '.hover\:bg-blue-600::before { + content: "\f123"; +} + +.a\.5 {};'. + + self assert: (fast allWithType: FASTCSSBlock) size equals: 2. + self assert: (fast allWithType: FASTCSSClassName) size equals: 2. + self assert: (fast allWithType: FASTCSSClassSelector) size equals: 2. + self assert: (fast allWithType: FASTCSSDeclaration) size equals: 1. + self assert: (fast allWithType: FASTCSSERROR) size equals: 1. + self assert: (fast allWithType: FASTCSSEscapeSequence) size equals: 3. + self assert: (fast allWithType: FASTCSSIdentifier) size equals: 4. + self assert: (fast allWithType: FASTCSSPropertyName) size equals: 1. + self assert: (fast allWithType: FASTCSSPseudoElementSelector) size equals: 1. + self assert: (fast allWithType: FASTCSSRuleSet) size equals: 2. + self assert: (fast allWithType: FASTCSSSelectors) size equals: 2. + self assert: (fast allWithType: FASTCSSStringValue) size equals: 1. + self assert: (fast allWithType: FASTCSSStylesheet) size equals: 1. + self assert: (fast allWithType: FASTCSSTagName) size equals: 1. + + stack push: fast rootEntities anyOne. + self assert: self topEntity sourceCode equals: '.hover\:bg-blue-600::before { + content: "\f123"; +} + +.a\.5 {};' withPlatformLineEndings. + self assert: (self topEntity isOfType: FASTCSSStylesheet). + self assert: (self topEntity isOfType: FamixTHasImmediateSource). + self assert: (self topEntity isOfType: FamixTSourceAnchor). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 3. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: '.hover\:bg-blue-600::before { + content: "\f123"; +}' withPlatformLineEndings. + self assert: (self topEntity isOfType: FASTCSSRuleSet). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 2. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: '.hover\:bg-blue-600::before'. + self assert: (self topEntity isOfType: FASTCSSSelectors). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 1. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: '.hover\:bg-blue-600::before'. + self assert: (self topEntity isOfType: FASTCSSPseudoElementSelector). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 2. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: '.hover\:bg-blue-600'. + self assert: (self topEntity isOfType: FASTCSSClassSelector). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 1. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: 'hover\:bg-blue-600'. + self assert: (self topEntity isOfType: FASTCSSClassName). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 3. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: 'hover'. + self assert: (self topEntity isOfType: FASTCSSIdentifier). + stack pop. + + stack push: (stack top childrenNodes at: 2). + self assert: self topEntity sourceCode equals: '\:'. + self assert: (self topEntity isOfType: FASTCSSEscapeSequence). + stack pop. + + stack push: (stack top childrenNodes at: 3). + self assert: self topEntity sourceCode equals: 'bg-blue-600'. + self assert: (self topEntity isOfType: FASTCSSIdentifier). + stack pop. + stack pop. + stack pop. + + stack push: (stack top childrenNodes at: 2). + self assert: self topEntity sourceCode equals: 'before'. + self assert: (self topEntity isOfType: FASTCSSTagName). + stack pop. + stack pop. + stack pop. + + stack push: (stack top childrenNodes at: 2). + self assert: self topEntity sourceCode equals: '{ + content: "\f123"; +}' withPlatformLineEndings. + self assert: (self topEntity isOfType: FASTCSSBlock). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 1. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: 'content: "\f123";'. + self assert: (self topEntity isOfType: FASTCSSDeclaration). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 2. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: 'content'. + self assert: (self topEntity isOfType: FASTCSSPropertyName). + stack pop. + + stack push: (stack top childrenNodes at: 2). + self assert: self topEntity sourceCode equals: '"\f123"'. + self assert: (self topEntity isOfType: FASTCSSStringValue). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 1. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: '\f123'. + self assert: (self topEntity isOfType: FASTCSSEscapeSequence). + stack pop. + stack pop. + stack pop. + stack pop. + stack pop. + + stack push: (stack top childrenNodes at: 2). + self assert: self topEntity sourceCode equals: '.a\.5 {}'. + self assert: (self topEntity isOfType: FASTCSSRuleSet). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 2. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: '.a\.5'. + self assert: (self topEntity isOfType: FASTCSSSelectors). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 1. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: '.a\.5'. + self assert: (self topEntity isOfType: FASTCSSClassSelector). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 1. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: 'a\.5'. + self assert: (self topEntity isOfType: FASTCSSClassName). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 3. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: 'a'. + self assert: (self topEntity isOfType: FASTCSSIdentifier). + stack pop. + + stack push: (stack top childrenNodes at: 2). + self assert: self topEntity sourceCode equals: '\.'. + self assert: (self topEntity isOfType: FASTCSSEscapeSequence). + stack pop. + + stack push: (stack top childrenNodes at: 3). + self assert: self topEntity sourceCode equals: '5'. + self assert: (self topEntity isOfType: FASTCSSIdentifier). + stack pop. + stack pop. + stack pop. + stack pop. + + stack push: (stack top childrenNodes at: 2). + self assert: self topEntity sourceCode equals: '{}'. + self assert: (self topEntity isOfType: FASTCSSBlock). + stack pop. + stack pop. + + stack push: (stack top childrenNodes at: 3). + self assert: self topEntity sourceCode equals: ''. + self assert: (self topEntity isOfType: FASTCSSERROR). + self assert: (self topEntity isOfType: FamixTHasImmediateSource). + self assert: (self topEntity isOfType: FamixTSourceAnchor). + stack pop. + self assert: self topEntity source equals: '.hover\:bg-blue-600::before { + content: "\f123"; +} + +.a\.5 {};' withPlatformLineEndings +] + +{ #category : 'tests' } +FASTCSSImporterTest >> testGeneratedFunctionCalls [ + + "Generated as regression test by TSFASTImporterTestGenerator>>#generateTestNamed:fromCode:protocol: + Regenerate executing: self regenerateTest: #testGeneratedFunctionCalls " + + self parse: 'a { + color: rgba(0, 255, 0, 0.5); +};'. + + self assert: (fast allWithType: FASTCSSArguments) size equals: 1. + self assert: (fast allWithType: FASTCSSBlock) size equals: 1. + self assert: (fast allWithType: FASTCSSCallExpression) size equals: 1. + self assert: (fast allWithType: FASTCSSDeclaration) size equals: 1. + self assert: (fast allWithType: FASTCSSERROR) size equals: 1. + self assert: (fast allWithType: FASTCSSFloatValue) size equals: 1. + self assert: (fast allWithType: FASTCSSFunctionName) size equals: 1. + self assert: (fast allWithType: FASTCSSIntegerValue) size equals: 3. + self assert: (fast allWithType: FASTCSSPropertyName) size equals: 1. + self assert: (fast allWithType: FASTCSSRuleSet) size equals: 1. + self assert: (fast allWithType: FASTCSSSelectors) size equals: 1. + self assert: (fast allWithType: FASTCSSStylesheet) size equals: 1. + self assert: (fast allWithType: FASTCSSTagName) size equals: 1. + + stack push: fast rootEntities anyOne. + self assert: self topEntity sourceCode equals: 'a { + color: rgba(0, 255, 0, 0.5); +};' withPlatformLineEndings. + self assert: (self topEntity isOfType: FASTCSSStylesheet). + self assert: (self topEntity isOfType: FamixTHasImmediateSource). + self assert: (self topEntity isOfType: FamixTSourceAnchor). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 2. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: 'a { + color: rgba(0, 255, 0, 0.5); +}' withPlatformLineEndings. + self assert: (self topEntity isOfType: FASTCSSRuleSet). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 2. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: 'a'. + self assert: (self topEntity isOfType: FASTCSSSelectors). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 1. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: 'a'. + self assert: (self topEntity isOfType: FASTCSSTagName). + stack pop. + stack pop. + + stack push: (stack top childrenNodes at: 2). + self assert: self topEntity sourceCode equals: '{ + color: rgba(0, 255, 0, 0.5); +}' withPlatformLineEndings. + self assert: (self topEntity isOfType: FASTCSSBlock). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 1. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: 'color: rgba(0, 255, 0, 0.5);'. + self assert: (self topEntity isOfType: FASTCSSDeclaration). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 2. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: 'color'. + self assert: (self topEntity isOfType: FASTCSSPropertyName). + stack pop. + + stack push: (stack top childrenNodes at: 2). + self assert: self topEntity sourceCode equals: 'rgba(0, 255, 0, 0.5)'. + self assert: (self topEntity isOfType: FASTCSSCallExpression). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 2. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: 'rgba'. + self assert: (self topEntity isOfType: FASTCSSFunctionName). + stack pop. + + stack push: (stack top childrenNodes at: 2). + self assert: self topEntity sourceCode equals: '(0, 255, 0, 0.5)'. + self assert: (self topEntity isOfType: FASTCSSArguments). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 4. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: '0'. + self assert: (self topEntity isOfType: FASTCSSIntegerValue). + stack pop. + + stack push: (stack top childrenNodes at: 2). + self assert: self topEntity sourceCode equals: '255'. + self assert: (self topEntity isOfType: FASTCSSIntegerValue). + stack pop. + + stack push: (stack top childrenNodes at: 3). + self assert: self topEntity sourceCode equals: '0'. + self assert: (self topEntity isOfType: FASTCSSIntegerValue). + stack pop. + + stack push: (stack top childrenNodes at: 4). + self assert: self topEntity sourceCode equals: '0.5'. + self assert: (self topEntity isOfType: FASTCSSFloatValue). + stack pop. + stack pop. + stack pop. + stack pop. + stack pop. + stack pop. + + stack push: (stack top childrenNodes at: 2). + self assert: self topEntity sourceCode equals: ''. + self assert: (self topEntity isOfType: FASTCSSERROR). + self assert: (self topEntity isOfType: FamixTHasImmediateSource). + self assert: (self topEntity isOfType: FamixTSourceAnchor). + stack pop. + self assert: self topEntity source equals: 'a { + color: rgba(0, 255, 0, 0.5); +};' withPlatformLineEndings +] + +{ #category : 'tests' } +FASTCSSImporterTest >> testGeneratedIdSelectors [ + + "Generated as regression test by TSFASTImporterTestGenerator>>#generateTestNamed:fromCode:protocol: + Regenerate executing: self regenerateTest: #testGeneratedIdSelectors " + + self parse: '#some-id, a#another-id {};'. + + self assert: (fast allWithType: FASTCSSBlock) size equals: 1. + self assert: (fast allWithType: FASTCSSERROR) size equals: 1. + self assert: (fast allWithType: FASTCSSIdName) size equals: 2. + self assert: (fast allWithType: FASTCSSIdSelector) size equals: 2. + self assert: (fast allWithType: FASTCSSRuleSet) size equals: 1. + self assert: (fast allWithType: FASTCSSSelectors) size equals: 1. + self assert: (fast allWithType: FASTCSSStylesheet) size equals: 1. + self assert: (fast allWithType: FASTCSSTagName) size equals: 1. + + stack push: fast rootEntities anyOne. + self assert: self topEntity sourceCode equals: '#some-id, a#another-id {};'. + self assert: (self topEntity isOfType: FASTCSSStylesheet). + self assert: (self topEntity isOfType: FamixTHasImmediateSource). + self assert: (self topEntity isOfType: FamixTSourceAnchor). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 2. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: '#some-id, a#another-id {}'. + self assert: (self topEntity isOfType: FASTCSSRuleSet). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 2. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: '#some-id, a#another-id'. + self assert: (self topEntity isOfType: FASTCSSSelectors). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 2. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: '#some-id'. + self assert: (self topEntity isOfType: FASTCSSIdSelector). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 1. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: 'some-id'. + self assert: (self topEntity isOfType: FASTCSSIdName). + stack pop. + stack pop. + + stack push: (stack top childrenNodes at: 2). + self assert: self topEntity sourceCode equals: 'a#another-id'. + self assert: (self topEntity isOfType: FASTCSSIdSelector). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 2. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: 'a'. + self assert: (self topEntity isOfType: FASTCSSTagName). + stack pop. + + stack push: (stack top childrenNodes at: 2). + self assert: self topEntity sourceCode equals: 'another-id'. + self assert: (self topEntity isOfType: FASTCSSIdName). + stack pop. + stack pop. + stack pop. + + stack push: (stack top childrenNodes at: 2). + self assert: self topEntity sourceCode equals: '{}'. + self assert: (self topEntity isOfType: FASTCSSBlock). + stack pop. + stack pop. + + stack push: (stack top childrenNodes at: 2). + self assert: self topEntity sourceCode equals: ''. + self assert: (self topEntity isOfType: FASTCSSERROR). + self assert: (self topEntity isOfType: FamixTHasImmediateSource). + self assert: (self topEntity isOfType: FamixTSourceAnchor). + stack pop. + self assert: self topEntity source equals: '#some-id, a#another-id {};' +] + +{ #category : 'tests' } +FASTCSSImporterTest >> testGeneratedImportStatements [ + + "Generated as regression test by TSFASTImporterTestGenerator>>#generateTestNamed:fromCode:protocol: + Regenerate executing: self regenerateTest: #testGeneratedImportStatements " + + self parse: '@import url("fineprint.css") print; +@import url("bluish.css") speech; +@import ''custom.css''; +@import url("chrome://communicator/skin/"); +@import "common.css" screen;;'. + + self assert: (fast allWithType: FASTCSSArguments) size equals: 3. + self assert: (fast allWithType: FASTCSSCallExpression) size equals: 3. + self assert: (fast allWithType: FASTCSSERROR) size equals: 1. + self assert: (fast allWithType: FASTCSSFunctionName) size equals: 3. + self assert: (fast allWithType: FASTCSSImportStatement) size equals: 5. + self assert: (fast allWithType: FASTCSSKeywordQuery) size equals: 3. + self assert: (fast allWithType: FASTCSSStringContent) size equals: 5. + self assert: (fast allWithType: FASTCSSStringValue) size equals: 5. + self assert: (fast allWithType: FASTCSSStylesheet) size equals: 1. + + stack push: fast rootEntities anyOne. + self assert: self topEntity sourceCode equals: '@import url("fineprint.css") print; +@import url("bluish.css") speech; +@import ''custom.css''; +@import url("chrome://communicator/skin/"); +@import "common.css" screen;;' withPlatformLineEndings. + self assert: (self topEntity isOfType: FASTCSSStylesheet). + self assert: (self topEntity isOfType: FamixTHasImmediateSource). + self assert: (self topEntity isOfType: FamixTSourceAnchor). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 6. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: '@import url("fineprint.css") print;'. + self assert: (self topEntity isOfType: FASTCSSImportStatement). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 2. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: 'url("fineprint.css")'. + self assert: (self topEntity isOfType: FASTCSSCallExpression). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 2. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: 'url'. + self assert: (self topEntity isOfType: FASTCSSFunctionName). + stack pop. + + stack push: (stack top childrenNodes at: 2). + self assert: self topEntity sourceCode equals: '("fineprint.css")'. + self assert: (self topEntity isOfType: FASTCSSArguments). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 1. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: '"fineprint.css"'. + self assert: (self topEntity isOfType: FASTCSSStringValue). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 1. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: 'fineprint.css'. + self assert: (self topEntity isOfType: FASTCSSStringContent). + stack pop. + stack pop. + stack pop. + stack pop. + + stack push: (stack top childrenNodes at: 2). + self assert: self topEntity sourceCode equals: 'print'. + self assert: (self topEntity isOfType: FASTCSSKeywordQuery). + stack pop. + stack pop. + + stack push: (stack top childrenNodes at: 2). + self assert: self topEntity sourceCode equals: '@import url("bluish.css") speech;'. + self assert: (self topEntity isOfType: FASTCSSImportStatement). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 2. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: 'url("bluish.css")'. + self assert: (self topEntity isOfType: FASTCSSCallExpression). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 2. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: 'url'. + self assert: (self topEntity isOfType: FASTCSSFunctionName). + stack pop. + + stack push: (stack top childrenNodes at: 2). + self assert: self topEntity sourceCode equals: '("bluish.css")'. + self assert: (self topEntity isOfType: FASTCSSArguments). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 1. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: '"bluish.css"'. + self assert: (self topEntity isOfType: FASTCSSStringValue). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 1. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: 'bluish.css'. + self assert: (self topEntity isOfType: FASTCSSStringContent). + stack pop. + stack pop. + stack pop. + stack pop. + + stack push: (stack top childrenNodes at: 2). + self assert: self topEntity sourceCode equals: 'speech'. + self assert: (self topEntity isOfType: FASTCSSKeywordQuery). + stack pop. + stack pop. + + stack push: (stack top childrenNodes at: 3). + self assert: self topEntity sourceCode equals: '@import ''custom.css'';'. + self assert: (self topEntity isOfType: FASTCSSImportStatement). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 1. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: '''custom.css'''. + self assert: (self topEntity isOfType: FASTCSSStringValue). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 1. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: 'custom.css'. + self assert: (self topEntity isOfType: FASTCSSStringContent). + stack pop. + stack pop. + stack pop. + + stack push: (stack top childrenNodes at: 4). + self assert: self topEntity sourceCode equals: '@import url("chrome://communicator/skin/");'. + self assert: (self topEntity isOfType: FASTCSSImportStatement). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 1. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: 'url("chrome://communicator/skin/")'. + self assert: (self topEntity isOfType: FASTCSSCallExpression). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 2. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: 'url'. + self assert: (self topEntity isOfType: FASTCSSFunctionName). + stack pop. + + stack push: (stack top childrenNodes at: 2). + self assert: self topEntity sourceCode equals: '("chrome://communicator/skin/")'. + self assert: (self topEntity isOfType: FASTCSSArguments). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 1. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: '"chrome://communicator/skin/"'. + self assert: (self topEntity isOfType: FASTCSSStringValue). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 1. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: 'chrome://communicator/skin/'. + self assert: (self topEntity isOfType: FASTCSSStringContent). + stack pop. + stack pop. + stack pop. + stack pop. + stack pop. + + stack push: (stack top childrenNodes at: 5). + self assert: self topEntity sourceCode equals: '@import "common.css" screen;'. + self assert: (self topEntity isOfType: FASTCSSImportStatement). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 2. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: '"common.css"'. + self assert: (self topEntity isOfType: FASTCSSStringValue). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 1. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: 'common.css'. + self assert: (self topEntity isOfType: FASTCSSStringContent). + stack pop. + stack pop. + + stack push: (stack top childrenNodes at: 2). + self assert: self topEntity sourceCode equals: 'screen'. + self assert: (self topEntity isOfType: FASTCSSKeywordQuery). + stack pop. + stack pop. + + stack push: (stack top childrenNodes at: 6). + self assert: self topEntity sourceCode equals: ''. + self assert: (self topEntity isOfType: FASTCSSERROR). + self assert: (self topEntity isOfType: FamixTHasImmediateSource). + self assert: (self topEntity isOfType: FamixTSourceAnchor). + stack pop. + self assert: self topEntity source equals: '@import url("fineprint.css") print; +@import url("bluish.css") speech; +@import ''custom.css''; +@import url("chrome://communicator/skin/"); +@import "common.css" screen;;' withPlatformLineEndings +] + +{ #category : 'tests' } +FASTCSSImporterTest >> testGeneratedImportantDeclarations [ + + "Generated as regression test by TSFASTImporterTestGenerator>>#generateTestNamed:fromCode:protocol: + Regenerate executing: self regenerateTest: #testGeneratedImportantDeclarations " + + self parse: 'a { + b: c !important; +};'. + + self assert: (fast allWithType: FASTCSSBlock) size equals: 1. + self assert: (fast allWithType: FASTCSSDeclaration) size equals: 1. + self assert: (fast allWithType: FASTCSSERROR) size equals: 1. + self assert: (fast allWithType: FASTCSSImportant) size equals: 1. + self assert: (fast allWithType: FASTCSSPlainValue) size equals: 1. + self assert: (fast allWithType: FASTCSSPropertyName) size equals: 1. + self assert: (fast allWithType: FASTCSSRuleSet) size equals: 1. + self assert: (fast allWithType: FASTCSSSelectors) size equals: 1. + self assert: (fast allWithType: FASTCSSStylesheet) size equals: 1. + self assert: (fast allWithType: FASTCSSTagName) size equals: 1. + + stack push: fast rootEntities anyOne. + self assert: self topEntity sourceCode equals: 'a { + b: c !important; +};' withPlatformLineEndings. + self assert: (self topEntity isOfType: FASTCSSStylesheet). + self assert: (self topEntity isOfType: FamixTHasImmediateSource). + self assert: (self topEntity isOfType: FamixTSourceAnchor). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 2. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: 'a { + b: c !important; +}' withPlatformLineEndings. + self assert: (self topEntity isOfType: FASTCSSRuleSet). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 2. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: 'a'. + self assert: (self topEntity isOfType: FASTCSSSelectors). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 1. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: 'a'. + self assert: (self topEntity isOfType: FASTCSSTagName). + stack pop. + stack pop. + + stack push: (stack top childrenNodes at: 2). + self assert: self topEntity sourceCode equals: '{ + b: c !important; +}' withPlatformLineEndings. + self assert: (self topEntity isOfType: FASTCSSBlock). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 1. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: 'b: c !important;'. + self assert: (self topEntity isOfType: FASTCSSDeclaration). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 3. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: 'b'. + self assert: (self topEntity isOfType: FASTCSSPropertyName). + stack pop. + + stack push: (stack top childrenNodes at: 2). + self assert: self topEntity sourceCode equals: 'c'. + self assert: (self topEntity isOfType: FASTCSSPlainValue). + stack pop. + + stack push: (stack top childrenNodes at: 3). + self assert: self topEntity sourceCode equals: '!important'. + self assert: (self topEntity isOfType: FASTCSSImportant). + stack pop. + stack pop. + stack pop. + stack pop. + + stack push: (stack top childrenNodes at: 2). + self assert: self topEntity sourceCode equals: ''. + self assert: (self topEntity isOfType: FASTCSSERROR). + self assert: (self topEntity isOfType: FamixTHasImmediateSource). + self assert: (self topEntity isOfType: FamixTSourceAnchor). + stack pop. + self assert: self topEntity source equals: 'a { + b: c !important; +};' withPlatformLineEndings +] + +{ #category : 'tests' } +FASTCSSImporterTest >> testGeneratedKeyframesStatements [ + + "Generated as regression test by TSFASTImporterTestGenerator>>#generateTestNamed:fromCode:protocol: + Regenerate executing: self regenerateTest: #testGeneratedKeyframesStatements " + + self parse: '@keyframes important1 { + from { margin-top: 50px; } + 50% { margin-top: 150px !important; } /* ignored */ + to { margin-top: 100px; } +} + +@keyframes hello { + 0%, 50% {} +};'. + + self assert: (fast allWithType: FASTCSSBlock) size equals: 4. + self assert: (fast allWithType: FASTCSSComment) size equals: 1. + self assert: (fast allWithType: FASTCSSDeclaration) size equals: 3. + self assert: (fast allWithType: FASTCSSERROR) size equals: 1. + self assert: (fast allWithType: FASTCSSFrom) size equals: 1. + self assert: (fast allWithType: FASTCSSImportant) size equals: 1. + self assert: (fast allWithType: FASTCSSIntegerValue) size equals: 6. + self assert: (fast allWithType: FASTCSSKeyframeBlock) size equals: 4. + self assert: (fast allWithType: FASTCSSKeyframeBlockList) size equals: 2. + self assert: (fast allWithType: FASTCSSKeyframesName) size equals: 2. + self assert: (fast allWithType: FASTCSSKeyframesStatement) size equals: 2. + self assert: (fast allWithType: FASTCSSPropertyName) size equals: 3. + self assert: (fast allWithType: FASTCSSStylesheet) size equals: 1. + self assert: (fast allWithType: FASTCSSTo) size equals: 1. + self assert: (fast allWithType: FASTCSSUnit) size equals: 6. + + stack push: fast rootEntities anyOne. + self assert: self topEntity sourceCode equals: '@keyframes important1 { + from { margin-top: 50px; } + 50% { margin-top: 150px !important; } /* ignored */ + to { margin-top: 100px; } +} + +@keyframes hello { + 0%, 50% {} +};' withPlatformLineEndings. + self assert: (self topEntity isOfType: FASTCSSStylesheet). + self assert: (self topEntity isOfType: FamixTHasImmediateSource). + self assert: (self topEntity isOfType: FamixTSourceAnchor). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 3. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: '@keyframes important1 { + from { margin-top: 50px; } + 50% { margin-top: 150px !important; } /* ignored */ + to { margin-top: 100px; } +}' withPlatformLineEndings. + self assert: (self topEntity isOfType: FASTCSSKeyframesStatement). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 2. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: 'important1'. + self assert: (self topEntity isOfType: FASTCSSKeyframesName). + stack pop. + + stack push: (stack top childrenNodes at: 2). + self assert: self topEntity sourceCode equals: '{ + from { margin-top: 50px; } + 50% { margin-top: 150px !important; } /* ignored */ + to { margin-top: 100px; } +}' withPlatformLineEndings. + self assert: (self topEntity isOfType: FASTCSSKeyframeBlockList). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 4. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: 'from { margin-top: 50px; }'. + self assert: (self topEntity isOfType: FASTCSSKeyframeBlock). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 2. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: 'from'. + self assert: (self topEntity isOfType: FASTCSSFrom). + stack pop. + + stack push: (stack top childrenNodes at: 2). + self assert: self topEntity sourceCode equals: '{ margin-top: 50px; }'. + self assert: (self topEntity isOfType: FASTCSSBlock). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 1. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: 'margin-top: 50px;'. + self assert: (self topEntity isOfType: FASTCSSDeclaration). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 2. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: 'margin-top'. + self assert: (self topEntity isOfType: FASTCSSPropertyName). + stack pop. + + stack push: (stack top childrenNodes at: 2). + self assert: self topEntity sourceCode equals: '50px'. + self assert: (self topEntity isOfType: FASTCSSIntegerValue). + + "Testing value of monovalue relation childrenNode" + self assert: self topEntity childrenNode isNotNil. + + stack push: self topEntity childrenNode. + self assert: self topEntity sourceCode equals: 'px'. + self assert: (self topEntity isOfType: FASTCSSUnit). + stack pop. + stack pop. + stack pop. + stack pop. + stack pop. + + stack push: (stack top childrenNodes at: 2). + self assert: self topEntity sourceCode equals: '50% { margin-top: 150px !important; }'. + self assert: (self topEntity isOfType: FASTCSSKeyframeBlock). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 2. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: '50%'. + self assert: (self topEntity isOfType: FASTCSSIntegerValue). + + "Testing value of monovalue relation childrenNode" + self assert: self topEntity childrenNode isNotNil. + + stack push: self topEntity childrenNode. + self assert: self topEntity sourceCode equals: '%'. + self assert: (self topEntity isOfType: FASTCSSUnit). + stack pop. + stack pop. + + stack push: (stack top childrenNodes at: 2). + self assert: self topEntity sourceCode equals: '{ margin-top: 150px !important; }'. + self assert: (self topEntity isOfType: FASTCSSBlock). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 1. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: 'margin-top: 150px !important;'. + self assert: (self topEntity isOfType: FASTCSSDeclaration). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 3. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: 'margin-top'. + self assert: (self topEntity isOfType: FASTCSSPropertyName). + stack pop. + + stack push: (stack top childrenNodes at: 2). + self assert: self topEntity sourceCode equals: '150px'. + self assert: (self topEntity isOfType: FASTCSSIntegerValue). + + "Testing value of monovalue relation childrenNode" + self assert: self topEntity childrenNode isNotNil. + + stack push: self topEntity childrenNode. + self assert: self topEntity sourceCode equals: 'px'. + self assert: (self topEntity isOfType: FASTCSSUnit). + stack pop. + stack pop. + + stack push: (stack top childrenNodes at: 3). + self assert: self topEntity sourceCode equals: '!important'. + self assert: (self topEntity isOfType: FASTCSSImportant). + stack pop. + stack pop. + stack pop. + stack pop. + + stack push: (stack top childrenNodes at: 3). + self assert: self topEntity sourceCode equals: '/* ignored */'. + self assert: (self topEntity isOfType: FASTCSSComment). + stack pop. + + stack push: (stack top childrenNodes at: 4). + self assert: self topEntity sourceCode equals: 'to { margin-top: 100px; }'. + self assert: (self topEntity isOfType: FASTCSSKeyframeBlock). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 2. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: 'to'. + self assert: (self topEntity isOfType: FASTCSSTo). + stack pop. + + stack push: (stack top childrenNodes at: 2). + self assert: self topEntity sourceCode equals: '{ margin-top: 100px; }'. + self assert: (self topEntity isOfType: FASTCSSBlock). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 1. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: 'margin-top: 100px;'. + self assert: (self topEntity isOfType: FASTCSSDeclaration). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 2. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: 'margin-top'. + self assert: (self topEntity isOfType: FASTCSSPropertyName). + stack pop. + + stack push: (stack top childrenNodes at: 2). + self assert: self topEntity sourceCode equals: '100px'. + self assert: (self topEntity isOfType: FASTCSSIntegerValue). + + "Testing value of monovalue relation childrenNode" + self assert: self topEntity childrenNode isNotNil. + + stack push: self topEntity childrenNode. + self assert: self topEntity sourceCode equals: 'px'. + self assert: (self topEntity isOfType: FASTCSSUnit). + stack pop. + stack pop. + stack pop. + stack pop. + stack pop. + stack pop. + stack pop. + + stack push: (stack top childrenNodes at: 2). + self assert: self topEntity sourceCode equals: '@keyframes hello { + 0%, 50% {} +}' withPlatformLineEndings. + self assert: (self topEntity isOfType: FASTCSSKeyframesStatement). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 2. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: 'hello'. + self assert: (self topEntity isOfType: FASTCSSKeyframesName). + stack pop. + + stack push: (stack top childrenNodes at: 2). + self assert: self topEntity sourceCode equals: '{ + 0%, 50% {} +}' withPlatformLineEndings. + self assert: (self topEntity isOfType: FASTCSSKeyframeBlockList). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 1. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: '0%, 50% {}'. + self assert: (self topEntity isOfType: FASTCSSKeyframeBlock). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 3. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: '0%'. + self assert: (self topEntity isOfType: FASTCSSIntegerValue). + + "Testing value of monovalue relation childrenNode" + self assert: self topEntity childrenNode isNotNil. + + stack push: self topEntity childrenNode. + self assert: self topEntity sourceCode equals: '%'. + self assert: (self topEntity isOfType: FASTCSSUnit). + stack pop. + stack pop. + + stack push: (stack top childrenNodes at: 2). + self assert: self topEntity sourceCode equals: '50%'. + self assert: (self topEntity isOfType: FASTCSSIntegerValue). + + "Testing value of monovalue relation childrenNode" + self assert: self topEntity childrenNode isNotNil. + + stack push: self topEntity childrenNode. + self assert: self topEntity sourceCode equals: '%'. + self assert: (self topEntity isOfType: FASTCSSUnit). + stack pop. + stack pop. + + stack push: (stack top childrenNodes at: 3). + self assert: self topEntity sourceCode equals: '{}'. + self assert: (self topEntity isOfType: FASTCSSBlock). + stack pop. + stack pop. + stack pop. + stack pop. + + stack push: (stack top childrenNodes at: 3). + self assert: self topEntity sourceCode equals: ''. + self assert: (self topEntity isOfType: FASTCSSERROR). + self assert: (self topEntity isOfType: FamixTHasImmediateSource). + self assert: (self topEntity isOfType: FamixTSourceAnchor). + stack pop. + self assert: self topEntity source equals: '@keyframes important1 { + from { margin-top: 50px; } + 50% { margin-top: 150px !important; } /* ignored */ + to { margin-top: 100px; } +} + +@keyframes hello { + 0%, 50% {} +};' withPlatformLineEndings +] + +{ #category : 'tests' } +FASTCSSImporterTest >> testGeneratedMediaStatements [ + + "Generated as regression test by TSFASTImporterTestGenerator>>#generateTestNamed:fromCode:protocol: + Regenerate executing: self regenerateTest: #testGeneratedMediaStatements " + + self parse: '@media screen and (min-width: 30em) and (orientation: landscape) {} +@media (min-height: 680px), screen and (orientation: portrait) {} +@media not all and (monochrome) {} +@media only screen {} +@media screen and (min-width: 0 0) { + .tooltipped-multiline: after {} +};'. + + self assert: (fast allWithType: FASTCSSBinaryQuery) size equals: 5. + self assert: (fast allWithType: FASTCSSBlock) size equals: 6. + self assert: (fast allWithType: FASTCSSClassName) size equals: 2. + self assert: (fast allWithType: FASTCSSClassSelector) size equals: 1. + self assert: (fast allWithType: FASTCSSERROR) size equals: 1. + self assert: (fast allWithType: FASTCSSFeatureName) size equals: 5. + self assert: (fast allWithType: FASTCSSFeatureQuery) size equals: 5. + self assert: (fast allWithType: FASTCSSIdentifier) size equals: 2. + self assert: (fast allWithType: FASTCSSIntegerValue) size equals: 4. + self assert: (fast allWithType: FASTCSSKeywordQuery) size equals: 6. + self assert: (fast allWithType: FASTCSSMediaStatement) size equals: 5. + self assert: (fast allWithType: FASTCSSParenthesizedQuery) size equals: 1. + self assert: (fast allWithType: FASTCSSPlainValue) size equals: 2. + self assert: (fast allWithType: FASTCSSPseudoClassSelector) size equals: 1. + self assert: (fast allWithType: FASTCSSRuleSet) size equals: 1. + self assert: (fast allWithType: FASTCSSSelectors) size equals: 1. + self assert: (fast allWithType: FASTCSSStylesheet) size equals: 1. + self assert: (fast allWithType: FASTCSSUnaryQuery) size equals: 2. + self assert: (fast allWithType: FASTCSSUnit) size equals: 2. + + stack push: fast rootEntities anyOne. + self assert: self topEntity sourceCode equals: '@media screen and (min-width: 30em) and (orientation: landscape) {} +@media (min-height: 680px), screen and (orientation: portrait) {} +@media not all and (monochrome) {} +@media only screen {} +@media screen and (min-width: 0 0) { + .tooltipped-multiline: after {} +};' withPlatformLineEndings. + self assert: (self topEntity isOfType: FASTCSSStylesheet). + self assert: (self topEntity isOfType: FamixTHasImmediateSource). + self assert: (self topEntity isOfType: FamixTSourceAnchor). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 6. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: '@media screen and (min-width: 30em) and (orientation: landscape) {}'. + self assert: (self topEntity isOfType: FASTCSSMediaStatement). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 2. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: 'screen and (min-width: 30em) and (orientation: landscape)'. + self assert: (self topEntity isOfType: FASTCSSBinaryQuery). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 2. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: 'screen and (min-width: 30em)'. + self assert: (self topEntity isOfType: FASTCSSBinaryQuery). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 2. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: 'screen'. + self assert: (self topEntity isOfType: FASTCSSKeywordQuery). + stack pop. + + stack push: (stack top childrenNodes at: 2). + self assert: self topEntity sourceCode equals: '(min-width: 30em)'. + self assert: (self topEntity isOfType: FASTCSSFeatureQuery). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 2. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: 'min-width'. + self assert: (self topEntity isOfType: FASTCSSFeatureName). + stack pop. + + stack push: (stack top childrenNodes at: 2). + self assert: self topEntity sourceCode equals: '30em'. + self assert: (self topEntity isOfType: FASTCSSIntegerValue). + + "Testing value of monovalue relation childrenNode" + self assert: self topEntity childrenNode isNotNil. + + stack push: self topEntity childrenNode. + self assert: self topEntity sourceCode equals: 'em'. + self assert: (self topEntity isOfType: FASTCSSUnit). + stack pop. + stack pop. + stack pop. + stack pop. + + stack push: (stack top childrenNodes at: 2). + self assert: self topEntity sourceCode equals: '(orientation: landscape)'. + self assert: (self topEntity isOfType: FASTCSSFeatureQuery). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 2. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: 'orientation'. + self assert: (self topEntity isOfType: FASTCSSFeatureName). + stack pop. + + stack push: (stack top childrenNodes at: 2). + self assert: self topEntity sourceCode equals: 'landscape'. + self assert: (self topEntity isOfType: FASTCSSPlainValue). + stack pop. + stack pop. + stack pop. + + stack push: (stack top childrenNodes at: 2). + self assert: self topEntity sourceCode equals: '{}'. + self assert: (self topEntity isOfType: FASTCSSBlock). + stack pop. + stack pop. + + stack push: (stack top childrenNodes at: 2). + self assert: self topEntity sourceCode equals: '@media (min-height: 680px), screen and (orientation: portrait) {}'. + self assert: (self topEntity isOfType: FASTCSSMediaStatement). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 3. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: '(min-height: 680px)'. + self assert: (self topEntity isOfType: FASTCSSFeatureQuery). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 2. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: 'min-height'. + self assert: (self topEntity isOfType: FASTCSSFeatureName). + stack pop. + + stack push: (stack top childrenNodes at: 2). + self assert: self topEntity sourceCode equals: '680px'. + self assert: (self topEntity isOfType: FASTCSSIntegerValue). + + "Testing value of monovalue relation childrenNode" + self assert: self topEntity childrenNode isNotNil. + + stack push: self topEntity childrenNode. + self assert: self topEntity sourceCode equals: 'px'. + self assert: (self topEntity isOfType: FASTCSSUnit). + stack pop. + stack pop. + stack pop. + + stack push: (stack top childrenNodes at: 2). + self assert: self topEntity sourceCode equals: 'screen and (orientation: portrait)'. + self assert: (self topEntity isOfType: FASTCSSBinaryQuery). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 2. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: 'screen'. + self assert: (self topEntity isOfType: FASTCSSKeywordQuery). + stack pop. + + stack push: (stack top childrenNodes at: 2). + self assert: self topEntity sourceCode equals: '(orientation: portrait)'. + self assert: (self topEntity isOfType: FASTCSSFeatureQuery). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 2. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: 'orientation'. + self assert: (self topEntity isOfType: FASTCSSFeatureName). + stack pop. + + stack push: (stack top childrenNodes at: 2). + self assert: self topEntity sourceCode equals: 'portrait'. + self assert: (self topEntity isOfType: FASTCSSPlainValue). + stack pop. + stack pop. + stack pop. + + stack push: (stack top childrenNodes at: 3). + self assert: self topEntity sourceCode equals: '{}'. + self assert: (self topEntity isOfType: FASTCSSBlock). + stack pop. + stack pop. + + stack push: (stack top childrenNodes at: 3). + self assert: self topEntity sourceCode equals: '@media not all and (monochrome) {}'. + self assert: (self topEntity isOfType: FASTCSSMediaStatement). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 2. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: 'not all and (monochrome)'. + self assert: (self topEntity isOfType: FASTCSSBinaryQuery). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 2. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: 'not all'. + self assert: (self topEntity isOfType: FASTCSSUnaryQuery). + + "Testing value of monovalue relation childrenNode" + self assert: self topEntity childrenNode isNotNil. + + stack push: self topEntity childrenNode. + self assert: self topEntity sourceCode equals: 'all'. + self assert: (self topEntity isOfType: FASTCSSKeywordQuery). + stack pop. + stack pop. + + stack push: (stack top childrenNodes at: 2). + self assert: self topEntity sourceCode equals: '(monochrome)'. + self assert: (self topEntity isOfType: FASTCSSParenthesizedQuery). + + "Testing value of monovalue relation childrenNode" + self assert: self topEntity childrenNode isNotNil. + + stack push: self topEntity childrenNode. + self assert: self topEntity sourceCode equals: 'monochrome'. + self assert: (self topEntity isOfType: FASTCSSKeywordQuery). + stack pop. + stack pop. + stack pop. + + stack push: (stack top childrenNodes at: 2). + self assert: self topEntity sourceCode equals: '{}'. + self assert: (self topEntity isOfType: FASTCSSBlock). + stack pop. + stack pop. + + stack push: (stack top childrenNodes at: 4). + self assert: self topEntity sourceCode equals: '@media only screen {}'. + self assert: (self topEntity isOfType: FASTCSSMediaStatement). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 2. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: 'only screen'. + self assert: (self topEntity isOfType: FASTCSSUnaryQuery). + + "Testing value of monovalue relation childrenNode" + self assert: self topEntity childrenNode isNotNil. + + stack push: self topEntity childrenNode. + self assert: self topEntity sourceCode equals: 'screen'. + self assert: (self topEntity isOfType: FASTCSSKeywordQuery). + stack pop. + stack pop. + + stack push: (stack top childrenNodes at: 2). + self assert: self topEntity sourceCode equals: '{}'. + self assert: (self topEntity isOfType: FASTCSSBlock). + stack pop. + stack pop. + + stack push: (stack top childrenNodes at: 5). + self assert: self topEntity sourceCode equals: '@media screen and (min-width: 0 0) { + .tooltipped-multiline: after {} +}' withPlatformLineEndings. + self assert: (self topEntity isOfType: FASTCSSMediaStatement). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 2. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: 'screen and (min-width: 0 0)'. + self assert: (self topEntity isOfType: FASTCSSBinaryQuery). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 2. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: 'screen'. + self assert: (self topEntity isOfType: FASTCSSKeywordQuery). + stack pop. + + stack push: (stack top childrenNodes at: 2). + self assert: self topEntity sourceCode equals: '(min-width: 0 0)'. + self assert: (self topEntity isOfType: FASTCSSFeatureQuery). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 3. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: 'min-width'. + self assert: (self topEntity isOfType: FASTCSSFeatureName). + stack pop. + + stack push: (stack top childrenNodes at: 2). + self assert: self topEntity sourceCode equals: '0'. + self assert: (self topEntity isOfType: FASTCSSIntegerValue). + stack pop. + + stack push: (stack top childrenNodes at: 3). + self assert: self topEntity sourceCode equals: '0'. + self assert: (self topEntity isOfType: FASTCSSIntegerValue). + stack pop. + stack pop. + stack pop. + + stack push: (stack top childrenNodes at: 2). + self assert: self topEntity sourceCode equals: '{ + .tooltipped-multiline: after {} +}' withPlatformLineEndings. + self assert: (self topEntity isOfType: FASTCSSBlock). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 1. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: '.tooltipped-multiline: after {}'. + self assert: (self topEntity isOfType: FASTCSSRuleSet). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 2. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: '.tooltipped-multiline: after'. + self assert: (self topEntity isOfType: FASTCSSSelectors). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 1. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: '.tooltipped-multiline: after'. + self assert: (self topEntity isOfType: FASTCSSPseudoClassSelector). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 2. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: '.tooltipped-multiline'. + self assert: (self topEntity isOfType: FASTCSSClassSelector). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 1. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: 'tooltipped-multiline'. + self assert: (self topEntity isOfType: FASTCSSClassName). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 1. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: 'tooltipped-multiline'. + self assert: (self topEntity isOfType: FASTCSSIdentifier). + stack pop. + stack pop. + stack pop. + + stack push: (stack top childrenNodes at: 2). + self assert: self topEntity sourceCode equals: 'after'. + self assert: (self topEntity isOfType: FASTCSSClassName). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 1. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: 'after'. + self assert: (self topEntity isOfType: FASTCSSIdentifier). + stack pop. + stack pop. + stack pop. + stack pop. + + stack push: (stack top childrenNodes at: 2). + self assert: self topEntity sourceCode equals: '{}'. + self assert: (self topEntity isOfType: FASTCSSBlock). + stack pop. + stack pop. + stack pop. + stack pop. + + stack push: (stack top childrenNodes at: 6). + self assert: self topEntity sourceCode equals: ''. + self assert: (self topEntity isOfType: FASTCSSERROR). + self assert: (self topEntity isOfType: FamixTHasImmediateSource). + self assert: (self topEntity isOfType: FamixTSourceAnchor). + stack pop. + self assert: self topEntity source equals: '@media screen and (min-width: 30em) and (orientation: landscape) {} +@media (min-height: 680px), screen and (orientation: portrait) {} +@media not all and (monochrome) {} +@media only screen {} +@media screen and (min-width: 0 0) { + .tooltipped-multiline: after {} +};' withPlatformLineEndings +] + +{ #category : 'tests' } +FASTCSSImporterTest >> testGeneratedNamespaceStatements [ + + "Generated as regression test by TSFASTImporterTestGenerator>>#generateTestNamed:fromCode:protocol: + Regenerate executing: self regenerateTest: #testGeneratedNamespaceStatements " + + self parse: '/* Default namespace */ +@namespace url(XML-namespace-URL); +@namespace "XML-namespace-URL"; +@namespace url(http://www.w3.org/1999/xhtml); +@namespace svg url(http://www.w3.org/2000/svg); + +/* Prefixed namespace */ +@namespace prefix url(XML-namespace-URL); +@namespace prefix "XML-namespace-URL";;'. + + self assert: (fast allWithType: FASTCSSArguments) size equals: 4. + self assert: (fast allWithType: FASTCSSCallExpression) size equals: 4. + self assert: (fast allWithType: FASTCSSComment) size equals: 2. + self assert: (fast allWithType: FASTCSSERROR) size equals: 1. + self assert: (fast allWithType: FASTCSSFunctionName) size equals: 4. + self assert: (fast allWithType: FASTCSSNamespaceName) size equals: 3. + self assert: (fast allWithType: FASTCSSNamespaceStatement) size equals: 6. + self assert: (fast allWithType: FASTCSSPlainValue) size equals: 4. + self assert: (fast allWithType: FASTCSSStringContent) size equals: 2. + self assert: (fast allWithType: FASTCSSStringValue) size equals: 2. + self assert: (fast allWithType: FASTCSSStylesheet) size equals: 1. + + stack push: fast rootEntities anyOne. + self assert: self topEntity sourceCode equals: '/* Default namespace */ +@namespace url(XML-namespace-URL); +@namespace "XML-namespace-URL"; +@namespace url(http://www.w3.org/1999/xhtml); +@namespace svg url(http://www.w3.org/2000/svg); + +/* Prefixed namespace */ +@namespace prefix url(XML-namespace-URL); +@namespace prefix "XML-namespace-URL";;' withPlatformLineEndings. + self assert: (self topEntity isOfType: FASTCSSStylesheet). + self assert: (self topEntity isOfType: FamixTHasImmediateSource). + self assert: (self topEntity isOfType: FamixTSourceAnchor). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 9. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: '/* Default namespace */'. + self assert: (self topEntity isOfType: FASTCSSComment). + stack pop. + + stack push: (stack top childrenNodes at: 2). + self assert: self topEntity sourceCode equals: '@namespace url(XML-namespace-URL);'. + self assert: (self topEntity isOfType: FASTCSSNamespaceStatement). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 1. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: 'url(XML-namespace-URL)'. + self assert: (self topEntity isOfType: FASTCSSCallExpression). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 2. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: 'url'. + self assert: (self topEntity isOfType: FASTCSSFunctionName). + stack pop. + + stack push: (stack top childrenNodes at: 2). + self assert: self topEntity sourceCode equals: '(XML-namespace-URL)'. + self assert: (self topEntity isOfType: FASTCSSArguments). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 1. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: 'XML-namespace-URL'. + self assert: (self topEntity isOfType: FASTCSSPlainValue). + stack pop. + stack pop. + stack pop. + stack pop. + + stack push: (stack top childrenNodes at: 3). + self assert: self topEntity sourceCode equals: '@namespace "XML-namespace-URL";'. + self assert: (self topEntity isOfType: FASTCSSNamespaceStatement). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 1. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: '"XML-namespace-URL"'. + self assert: (self topEntity isOfType: FASTCSSStringValue). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 1. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: 'XML-namespace-URL'. + self assert: (self topEntity isOfType: FASTCSSStringContent). + stack pop. + stack pop. + stack pop. + + stack push: (stack top childrenNodes at: 4). + self assert: self topEntity sourceCode equals: '@namespace url(http://www.w3.org/1999/xhtml);'. + self assert: (self topEntity isOfType: FASTCSSNamespaceStatement). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 1. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: 'url(http://www.w3.org/1999/xhtml)'. + self assert: (self topEntity isOfType: FASTCSSCallExpression). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 2. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: 'url'. + self assert: (self topEntity isOfType: FASTCSSFunctionName). + stack pop. + + stack push: (stack top childrenNodes at: 2). + self assert: self topEntity sourceCode equals: '(http://www.w3.org/1999/xhtml)'. + self assert: (self topEntity isOfType: FASTCSSArguments). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 1. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: 'http://www.w3.org/1999/xhtml'. + self assert: (self topEntity isOfType: FASTCSSPlainValue). + stack pop. + stack pop. + stack pop. + stack pop. + + stack push: (stack top childrenNodes at: 5). + self assert: self topEntity sourceCode equals: '@namespace svg url(http://www.w3.org/2000/svg);'. + self assert: (self topEntity isOfType: FASTCSSNamespaceStatement). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 2. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: 'svg'. + self assert: (self topEntity isOfType: FASTCSSNamespaceName). + stack pop. + + stack push: (stack top childrenNodes at: 2). + self assert: self topEntity sourceCode equals: 'url(http://www.w3.org/2000/svg)'. + self assert: (self topEntity isOfType: FASTCSSCallExpression). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 2. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: 'url'. + self assert: (self topEntity isOfType: FASTCSSFunctionName). + stack pop. + + stack push: (stack top childrenNodes at: 2). + self assert: self topEntity sourceCode equals: '(http://www.w3.org/2000/svg)'. + self assert: (self topEntity isOfType: FASTCSSArguments). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 1. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: 'http://www.w3.org/2000/svg'. + self assert: (self topEntity isOfType: FASTCSSPlainValue). + stack pop. + stack pop. + stack pop. + stack pop. + + stack push: (stack top childrenNodes at: 6). + self assert: self topEntity sourceCode equals: '/* Prefixed namespace */'. + self assert: (self topEntity isOfType: FASTCSSComment). + stack pop. + + stack push: (stack top childrenNodes at: 7). + self assert: self topEntity sourceCode equals: '@namespace prefix url(XML-namespace-URL);'. + self assert: (self topEntity isOfType: FASTCSSNamespaceStatement). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 2. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: 'prefix'. + self assert: (self topEntity isOfType: FASTCSSNamespaceName). + stack pop. + + stack push: (stack top childrenNodes at: 2). + self assert: self topEntity sourceCode equals: 'url(XML-namespace-URL)'. + self assert: (self topEntity isOfType: FASTCSSCallExpression). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 2. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: 'url'. + self assert: (self topEntity isOfType: FASTCSSFunctionName). + stack pop. + + stack push: (stack top childrenNodes at: 2). + self assert: self topEntity sourceCode equals: '(XML-namespace-URL)'. + self assert: (self topEntity isOfType: FASTCSSArguments). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 1. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: 'XML-namespace-URL'. + self assert: (self topEntity isOfType: FASTCSSPlainValue). + stack pop. + stack pop. + stack pop. + stack pop. + + stack push: (stack top childrenNodes at: 8). + self assert: self topEntity sourceCode equals: '@namespace prefix "XML-namespace-URL";'. + self assert: (self topEntity isOfType: FASTCSSNamespaceStatement). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 2. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: 'prefix'. + self assert: (self topEntity isOfType: FASTCSSNamespaceName). + stack pop. + + stack push: (stack top childrenNodes at: 2). + self assert: self topEntity sourceCode equals: '"XML-namespace-URL"'. + self assert: (self topEntity isOfType: FASTCSSStringValue). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 1. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: 'XML-namespace-URL'. + self assert: (self topEntity isOfType: FASTCSSStringContent). + stack pop. + stack pop. + stack pop. + + stack push: (stack top childrenNodes at: 9). + self assert: self topEntity sourceCode equals: ''. + self assert: (self topEntity isOfType: FASTCSSERROR). + self assert: (self topEntity isOfType: FamixTHasImmediateSource). + self assert: (self topEntity isOfType: FamixTSourceAnchor). + stack pop. + self assert: self topEntity source equals: '/* Default namespace */ +@namespace url(XML-namespace-URL); +@namespace "XML-namespace-URL"; +@namespace url(http://www.w3.org/1999/xhtml); +@namespace svg url(http://www.w3.org/2000/svg); + +/* Prefixed namespace */ +@namespace prefix url(XML-namespace-URL); +@namespace prefix "XML-namespace-URL";;' withPlatformLineEndings +] + +{ #category : 'tests' } +FASTCSSImporterTest >> testGeneratedNestedCombinators [ + + "Generated as regression test by TSFASTImporterTestGenerator>>#generateTestNamed:fromCode:protocol: + Regenerate executing: self regenerateTest: #testGeneratedNestedCombinators " + + self parse: '.parent { + >p {} + >* {} + ~div {} + +p {} + space-element {} + | ns-element {} +};'. + + self assert: (fast allWithType: FASTCSSAdjacentSiblingSelector) size equals: 1. + self assert: (fast allWithType: FASTCSSBlock) size equals: 7. + self assert: (fast allWithType: FASTCSSChildSelector) size equals: 2. + self assert: (fast allWithType: FASTCSSClassName) size equals: 1. + self assert: (fast allWithType: FASTCSSClassSelector) size equals: 1. + self assert: (fast allWithType: FASTCSSERROR) size equals: 1. + self assert: (fast allWithType: FASTCSSIdentifier) size equals: 1. + self assert: (fast allWithType: FASTCSSNamespaceSelector) size equals: 1. + self assert: (fast allWithType: FASTCSSRuleSet) size equals: 7. + self assert: (fast allWithType: FASTCSSSelectors) size equals: 7. + self assert: (fast allWithType: FASTCSSSiblingSelector) size equals: 1. + self assert: (fast allWithType: FASTCSSStylesheet) size equals: 1. + self assert: (fast allWithType: FASTCSSTagName) size equals: 5. + self assert: (fast allWithType: FASTCSSUniversalSelector) size equals: 1. + + stack push: fast rootEntities anyOne. + self assert: self topEntity sourceCode equals: '.parent { + >p {} + >* {} + ~div {} + +p {} + space-element {} + | ns-element {} +};' withPlatformLineEndings. + self assert: (self topEntity isOfType: FASTCSSStylesheet). + self assert: (self topEntity isOfType: FamixTHasImmediateSource). + self assert: (self topEntity isOfType: FamixTSourceAnchor). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 2. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: '.parent { + >p {} + >* {} + ~div {} + +p {} + space-element {} + | ns-element {} +}' withPlatformLineEndings. + self assert: (self topEntity isOfType: FASTCSSRuleSet). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 2. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: '.parent'. + self assert: (self topEntity isOfType: FASTCSSSelectors). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 1. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: '.parent'. + self assert: (self topEntity isOfType: FASTCSSClassSelector). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 1. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: 'parent'. + self assert: (self topEntity isOfType: FASTCSSClassName). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 1. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: 'parent'. + self assert: (self topEntity isOfType: FASTCSSIdentifier). + stack pop. + stack pop. + stack pop. + stack pop. + + stack push: (stack top childrenNodes at: 2). + self assert: self topEntity sourceCode equals: '{ + >p {} + >* {} + ~div {} + +p {} + space-element {} + | ns-element {} +}' withPlatformLineEndings. + self assert: (self topEntity isOfType: FASTCSSBlock). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 6. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: '>p {}'. + self assert: (self topEntity isOfType: FASTCSSRuleSet). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 2. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: '>p'. + self assert: (self topEntity isOfType: FASTCSSSelectors). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 1. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: '>p'. + self assert: (self topEntity isOfType: FASTCSSChildSelector). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 1. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: 'p'. + self assert: (self topEntity isOfType: FASTCSSTagName). + stack pop. + stack pop. + stack pop. + + stack push: (stack top childrenNodes at: 2). + self assert: self topEntity sourceCode equals: '{}'. + self assert: (self topEntity isOfType: FASTCSSBlock). + stack pop. + stack pop. + + stack push: (stack top childrenNodes at: 2). + self assert: self topEntity sourceCode equals: '>* {}'. + self assert: (self topEntity isOfType: FASTCSSRuleSet). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 2. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: '>*'. + self assert: (self topEntity isOfType: FASTCSSSelectors). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 1. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: '>*'. + self assert: (self topEntity isOfType: FASTCSSChildSelector). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 1. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: '*'. + self assert: (self topEntity isOfType: FASTCSSUniversalSelector). + stack pop. + stack pop. + stack pop. + + stack push: (stack top childrenNodes at: 2). + self assert: self topEntity sourceCode equals: '{}'. + self assert: (self topEntity isOfType: FASTCSSBlock). + stack pop. + stack pop. + + stack push: (stack top childrenNodes at: 3). + self assert: self topEntity sourceCode equals: '~div {}'. + self assert: (self topEntity isOfType: FASTCSSRuleSet). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 2. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: '~div'. + self assert: (self topEntity isOfType: FASTCSSSelectors). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 1. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: '~div'. + self assert: (self topEntity isOfType: FASTCSSSiblingSelector). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 1. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: 'div'. + self assert: (self topEntity isOfType: FASTCSSTagName). + stack pop. + stack pop. + stack pop. + + stack push: (stack top childrenNodes at: 2). + self assert: self topEntity sourceCode equals: '{}'. + self assert: (self topEntity isOfType: FASTCSSBlock). + stack pop. + stack pop. + + stack push: (stack top childrenNodes at: 4). + self assert: self topEntity sourceCode equals: '+p {}'. + self assert: (self topEntity isOfType: FASTCSSRuleSet). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 2. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: '+p'. + self assert: (self topEntity isOfType: FASTCSSSelectors). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 1. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: '+p'. + self assert: (self topEntity isOfType: FASTCSSAdjacentSiblingSelector). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 1. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: 'p'. + self assert: (self topEntity isOfType: FASTCSSTagName). + stack pop. + stack pop. + stack pop. + + stack push: (stack top childrenNodes at: 2). + self assert: self topEntity sourceCode equals: '{}'. + self assert: (self topEntity isOfType: FASTCSSBlock). + stack pop. + stack pop. + + stack push: (stack top childrenNodes at: 5). + self assert: self topEntity sourceCode equals: 'space-element {}'. + self assert: (self topEntity isOfType: FASTCSSRuleSet). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 2. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: 'space-element'. + self assert: (self topEntity isOfType: FASTCSSSelectors). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 1. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: 'space-element'. + self assert: (self topEntity isOfType: FASTCSSTagName). + stack pop. + stack pop. + + stack push: (stack top childrenNodes at: 2). + self assert: self topEntity sourceCode equals: '{}'. + self assert: (self topEntity isOfType: FASTCSSBlock). + stack pop. + stack pop. + + stack push: (stack top childrenNodes at: 6). + self assert: self topEntity sourceCode equals: '| ns-element {}'. + self assert: (self topEntity isOfType: FASTCSSRuleSet). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 2. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: '| ns-element'. + self assert: (self topEntity isOfType: FASTCSSSelectors). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 1. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: '| ns-element'. + self assert: (self topEntity isOfType: FASTCSSNamespaceSelector). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 1. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: 'ns-element'. + self assert: (self topEntity isOfType: FASTCSSTagName). + stack pop. + stack pop. + stack pop. + + stack push: (stack top childrenNodes at: 2). + self assert: self topEntity sourceCode equals: '{}'. + self assert: (self topEntity isOfType: FASTCSSBlock). + stack pop. + stack pop. + stack pop. + stack pop. + + stack push: (stack top childrenNodes at: 2). + self assert: self topEntity sourceCode equals: ''. + self assert: (self topEntity isOfType: FASTCSSERROR). + self assert: (self topEntity isOfType: FamixTHasImmediateSource). + self assert: (self topEntity isOfType: FamixTSourceAnchor). + stack pop. + self assert: self topEntity source equals: '.parent { + >p {} + >* {} + ~div {} + +p {} + space-element {} + | ns-element {} +};' withPlatformLineEndings +] + +{ #category : 'tests' } +FASTCSSImporterTest >> testGeneratedNestingSelectors [ + + "Generated as regression test by TSFASTImporterTestGenerator>>#generateTestNamed:fromCode:protocol: + Regenerate executing: self regenerateTest: #testGeneratedNestingSelectors " + + self parse: 'a { + &.b {} + & c {} + & > d {} +};'. + + self assert: (fast allWithType: FASTCSSBlock) size equals: 4. + self assert: (fast allWithType: FASTCSSChildSelector) size equals: 1. + self assert: (fast allWithType: FASTCSSClassName) size equals: 1. + self assert: (fast allWithType: FASTCSSClassSelector) size equals: 1. + self assert: (fast allWithType: FASTCSSDescendantSelector) size equals: 1. + self assert: (fast allWithType: FASTCSSERROR) size equals: 1. + self assert: (fast allWithType: FASTCSSIdentifier) size equals: 1. + self assert: (fast allWithType: FASTCSSNestingSelector) size equals: 3. + self assert: (fast allWithType: FASTCSSRuleSet) size equals: 4. + self assert: (fast allWithType: FASTCSSSelectors) size equals: 4. + self assert: (fast allWithType: FASTCSSStylesheet) size equals: 1. + self assert: (fast allWithType: FASTCSSTagName) size equals: 3. + + stack push: fast rootEntities anyOne. + self assert: self topEntity sourceCode equals: 'a { + &.b {} + & c {} + & > d {} +};' withPlatformLineEndings. + self assert: (self topEntity isOfType: FASTCSSStylesheet). + self assert: (self topEntity isOfType: FamixTHasImmediateSource). + self assert: (self topEntity isOfType: FamixTSourceAnchor). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 2. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: 'a { + &.b {} + & c {} + & > d {} +}' withPlatformLineEndings. + self assert: (self topEntity isOfType: FASTCSSRuleSet). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 2. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: 'a'. + self assert: (self topEntity isOfType: FASTCSSSelectors). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 1. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: 'a'. + self assert: (self topEntity isOfType: FASTCSSTagName). + stack pop. + stack pop. + + stack push: (stack top childrenNodes at: 2). + self assert: self topEntity sourceCode equals: '{ + &.b {} + & c {} + & > d {} +}' withPlatformLineEndings. + self assert: (self topEntity isOfType: FASTCSSBlock). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 3. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: '&.b {}'. + self assert: (self topEntity isOfType: FASTCSSRuleSet). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 2. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: '&.b'. + self assert: (self topEntity isOfType: FASTCSSSelectors). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 1. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: '&.b'. + self assert: (self topEntity isOfType: FASTCSSClassSelector). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 2. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: '&'. + self assert: (self topEntity isOfType: FASTCSSNestingSelector). + stack pop. + + stack push: (stack top childrenNodes at: 2). + self assert: self topEntity sourceCode equals: 'b'. + self assert: (self topEntity isOfType: FASTCSSClassName). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 1. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: 'b'. + self assert: (self topEntity isOfType: FASTCSSIdentifier). + stack pop. + stack pop. + stack pop. + stack pop. + + stack push: (stack top childrenNodes at: 2). + self assert: self topEntity sourceCode equals: '{}'. + self assert: (self topEntity isOfType: FASTCSSBlock). + stack pop. + stack pop. + + stack push: (stack top childrenNodes at: 2). + self assert: self topEntity sourceCode equals: '& c {}'. + self assert: (self topEntity isOfType: FASTCSSRuleSet). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 2. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: '& c'. + self assert: (self topEntity isOfType: FASTCSSSelectors). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 1. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: '& c'. + self assert: (self topEntity isOfType: FASTCSSDescendantSelector). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 2. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: '&'. + self assert: (self topEntity isOfType: FASTCSSNestingSelector). + stack pop. + + stack push: (stack top childrenNodes at: 2). + self assert: self topEntity sourceCode equals: 'c'. + self assert: (self topEntity isOfType: FASTCSSTagName). + stack pop. + stack pop. + stack pop. + + stack push: (stack top childrenNodes at: 2). + self assert: self topEntity sourceCode equals: '{}'. + self assert: (self topEntity isOfType: FASTCSSBlock). + stack pop. + stack pop. + + stack push: (stack top childrenNodes at: 3). + self assert: self topEntity sourceCode equals: '& > d {}'. + self assert: (self topEntity isOfType: FASTCSSRuleSet). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 2. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: '& > d'. + self assert: (self topEntity isOfType: FASTCSSSelectors). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 1. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: '& > d'. + self assert: (self topEntity isOfType: FASTCSSChildSelector). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 2. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: '&'. + self assert: (self topEntity isOfType: FASTCSSNestingSelector). + stack pop. + + stack push: (stack top childrenNodes at: 2). + self assert: self topEntity sourceCode equals: 'd'. + self assert: (self topEntity isOfType: FASTCSSTagName). + stack pop. + stack pop. + stack pop. + + stack push: (stack top childrenNodes at: 2). + self assert: self topEntity sourceCode equals: '{}'. + self assert: (self topEntity isOfType: FASTCSSBlock). + stack pop. + stack pop. + stack pop. + stack pop. + + stack push: (stack top childrenNodes at: 2). + self assert: self topEntity sourceCode equals: ''. + self assert: (self topEntity isOfType: FASTCSSERROR). + self assert: (self topEntity isOfType: FamixTHasImmediateSource). + self assert: (self topEntity isOfType: FamixTSourceAnchor). + stack pop. + self assert: self topEntity source equals: 'a { + &.b {} + & c {} + & > d {} +};' withPlatformLineEndings +] + +{ #category : 'tests' } +FASTCSSImporterTest >> testGeneratedNoSpacesAfterColons [ + + "Generated as regression test by TSFASTImporterTestGenerator>>#generateTestNamed:fromCode:protocol: + Regenerate executing: self regenerateTest: #testGeneratedNoSpacesAfterColons " + + self parse: 'div { + all:unset; + display:flex; + justify-content:center; +};'. + + self assert: (fast allWithType: FASTCSSBlock) size equals: 1. + self assert: (fast allWithType: FASTCSSDeclaration) size equals: 3. + self assert: (fast allWithType: FASTCSSERROR) size equals: 1. + self assert: (fast allWithType: FASTCSSPlainValue) size equals: 3. + self assert: (fast allWithType: FASTCSSPropertyName) size equals: 3. + self assert: (fast allWithType: FASTCSSRuleSet) size equals: 1. + self assert: (fast allWithType: FASTCSSSelectors) size equals: 1. + self assert: (fast allWithType: FASTCSSStylesheet) size equals: 1. + self assert: (fast allWithType: FASTCSSTagName) size equals: 1. + + stack push: fast rootEntities anyOne. + self assert: self topEntity sourceCode equals: 'div { + all:unset; + display:flex; + justify-content:center; +};' withPlatformLineEndings. + self assert: (self topEntity isOfType: FASTCSSStylesheet). + self assert: (self topEntity isOfType: FamixTHasImmediateSource). + self assert: (self topEntity isOfType: FamixTSourceAnchor). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 2. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: 'div { + all:unset; + display:flex; + justify-content:center; +}' withPlatformLineEndings. + self assert: (self topEntity isOfType: FASTCSSRuleSet). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 2. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: 'div'. + self assert: (self topEntity isOfType: FASTCSSSelectors). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 1. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: 'div'. + self assert: (self topEntity isOfType: FASTCSSTagName). + stack pop. + stack pop. + + stack push: (stack top childrenNodes at: 2). + self assert: self topEntity sourceCode equals: '{ + all:unset; + display:flex; + justify-content:center; +}' withPlatformLineEndings. + self assert: (self topEntity isOfType: FASTCSSBlock). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 3. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: 'all:unset;'. + self assert: (self topEntity isOfType: FASTCSSDeclaration). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 2. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: 'all'. + self assert: (self topEntity isOfType: FASTCSSPropertyName). + stack pop. + + stack push: (stack top childrenNodes at: 2). + self assert: self topEntity sourceCode equals: 'unset'. + self assert: (self topEntity isOfType: FASTCSSPlainValue). + stack pop. + stack pop. + + stack push: (stack top childrenNodes at: 2). + self assert: self topEntity sourceCode equals: 'display:flex;'. + self assert: (self topEntity isOfType: FASTCSSDeclaration). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 2. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: 'display'. + self assert: (self topEntity isOfType: FASTCSSPropertyName). + stack pop. + + stack push: (stack top childrenNodes at: 2). + self assert: self topEntity sourceCode equals: 'flex'. + self assert: (self topEntity isOfType: FASTCSSPlainValue). + stack pop. + stack pop. + + stack push: (stack top childrenNodes at: 3). + self assert: self topEntity sourceCode equals: 'justify-content:center;'. + self assert: (self topEntity isOfType: FASTCSSDeclaration). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 2. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: 'justify-content'. + self assert: (self topEntity isOfType: FASTCSSPropertyName). + stack pop. + + stack push: (stack top childrenNodes at: 2). + self assert: self topEntity sourceCode equals: 'center'. + self assert: (self topEntity isOfType: FASTCSSPlainValue). + stack pop. + stack pop. + stack pop. + stack pop. + + stack push: (stack top childrenNodes at: 2). + self assert: self topEntity sourceCode equals: ''. + self assert: (self topEntity isOfType: FASTCSSERROR). + self assert: (self topEntity isOfType: FamixTHasImmediateSource). + self assert: (self topEntity isOfType: FamixTSourceAnchor). + stack pop. + self assert: self topEntity source equals: 'div { + all:unset; + display:flex; + justify-content:center; +};' withPlatformLineEndings +] + +{ #category : 'tests' } +FASTCSSImporterTest >> testGeneratedNthchildAndNthlastchildSelectors [ + + "Generated as regression test by TSFASTImporterTestGenerator>>#generateTestNamed:fromCode:protocol: + Regenerate executing: self regenerateTest: #testGeneratedNthchildAndNthlastchildSelectors " + + self parse: ':nth-child(2) {} +:nth-last-child(-n) {} +:nth-last-child(2n+1) {} +:nth-child(2n + 2) {} +:nth-last-child(-n) {} +:nth-child(2n of a.external) {};'. + + self assert: (fast allWithType: FASTCSSArguments) size equals: 6. + self assert: (fast allWithType: FASTCSSBlock) size equals: 6. + self assert: (fast allWithType: FASTCSSClassName) size equals: 7. + self assert: (fast allWithType: FASTCSSClassSelector) size equals: 1. + self assert: (fast allWithType: FASTCSSERROR) size equals: 1. + self assert: (fast allWithType: FASTCSSIdentifier) size equals: 1. + self assert: (fast allWithType: FASTCSSIntegerValue) size equals: 1. + self assert: (fast allWithType: FASTCSSPlainValue) size equals: 5. + self assert: (fast allWithType: FASTCSSPseudoClassSelector) size equals: 6. + self assert: (fast allWithType: FASTCSSRuleSet) size equals: 6. + self assert: (fast allWithType: FASTCSSSelectors) size equals: 6. + self assert: (fast allWithType: FASTCSSStylesheet) size equals: 1. + self assert: (fast allWithType: FASTCSSTagName) size equals: 1. + + stack push: fast rootEntities anyOne. + self assert: self topEntity sourceCode equals: ':nth-child(2) {} +:nth-last-child(-n) {} +:nth-last-child(2n+1) {} +:nth-child(2n + 2) {} +:nth-last-child(-n) {} +:nth-child(2n of a.external) {};' withPlatformLineEndings. + self assert: (self topEntity isOfType: FASTCSSStylesheet). + self assert: (self topEntity isOfType: FamixTHasImmediateSource). + self assert: (self topEntity isOfType: FamixTSourceAnchor). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 7. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: ':nth-child(2) {}'. + self assert: (self topEntity isOfType: FASTCSSRuleSet). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 2. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: ':nth-child(2)'. + self assert: (self topEntity isOfType: FASTCSSSelectors). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 1. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: ':nth-child(2)'. + self assert: (self topEntity isOfType: FASTCSSPseudoClassSelector). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 2. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: 'nth-child'. + self assert: (self topEntity isOfType: FASTCSSClassName). + stack pop. + + stack push: (stack top childrenNodes at: 2). + self assert: self topEntity sourceCode equals: '(2)'. + self assert: (self topEntity isOfType: FASTCSSArguments). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 1. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: '2'. + self assert: (self topEntity isOfType: FASTCSSIntegerValue). + stack pop. + stack pop. + stack pop. + stack pop. + + stack push: (stack top childrenNodes at: 2). + self assert: self topEntity sourceCode equals: '{}'. + self assert: (self topEntity isOfType: FASTCSSBlock). + stack pop. + stack pop. + + stack push: (stack top childrenNodes at: 2). + self assert: self topEntity sourceCode equals: ':nth-last-child(-n) {}'. + self assert: (self topEntity isOfType: FASTCSSRuleSet). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 2. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: ':nth-last-child(-n)'. + self assert: (self topEntity isOfType: FASTCSSSelectors). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 1. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: ':nth-last-child(-n)'. + self assert: (self topEntity isOfType: FASTCSSPseudoClassSelector). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 2. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: 'nth-last-child'. + self assert: (self topEntity isOfType: FASTCSSClassName). + stack pop. + + stack push: (stack top childrenNodes at: 2). + self assert: self topEntity sourceCode equals: '(-n)'. + self assert: (self topEntity isOfType: FASTCSSArguments). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 1. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: '-n'. + self assert: (self topEntity isOfType: FASTCSSPlainValue). + stack pop. + stack pop. + stack pop. + stack pop. + + stack push: (stack top childrenNodes at: 2). + self assert: self topEntity sourceCode equals: '{}'. + self assert: (self topEntity isOfType: FASTCSSBlock). + stack pop. + stack pop. + + stack push: (stack top childrenNodes at: 3). + self assert: self topEntity sourceCode equals: ':nth-last-child(2n+1) {}'. + self assert: (self topEntity isOfType: FASTCSSRuleSet). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 2. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: ':nth-last-child(2n+1)'. + self assert: (self topEntity isOfType: FASTCSSSelectors). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 1. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: ':nth-last-child(2n+1)'. + self assert: (self topEntity isOfType: FASTCSSPseudoClassSelector). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 2. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: 'nth-last-child'. + self assert: (self topEntity isOfType: FASTCSSClassName). + stack pop. + + stack push: (stack top childrenNodes at: 2). + self assert: self topEntity sourceCode equals: '(2n+1)'. + self assert: (self topEntity isOfType: FASTCSSArguments). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 1. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: '2n+1'. + self assert: (self topEntity isOfType: FASTCSSPlainValue). + stack pop. + stack pop. + stack pop. + stack pop. + + stack push: (stack top childrenNodes at: 2). + self assert: self topEntity sourceCode equals: '{}'. + self assert: (self topEntity isOfType: FASTCSSBlock). + stack pop. + stack pop. + + stack push: (stack top childrenNodes at: 4). + self assert: self topEntity sourceCode equals: ':nth-child(2n + 2) {}'. + self assert: (self topEntity isOfType: FASTCSSRuleSet). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 2. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: ':nth-child(2n + 2)'. + self assert: (self topEntity isOfType: FASTCSSSelectors). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 1. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: ':nth-child(2n + 2)'. + self assert: (self topEntity isOfType: FASTCSSPseudoClassSelector). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 2. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: 'nth-child'. + self assert: (self topEntity isOfType: FASTCSSClassName). + stack pop. + + stack push: (stack top childrenNodes at: 2). + self assert: self topEntity sourceCode equals: '(2n + 2)'. + self assert: (self topEntity isOfType: FASTCSSArguments). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 1. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: '2n + 2'. + self assert: (self topEntity isOfType: FASTCSSPlainValue). + stack pop. + stack pop. + stack pop. + stack pop. + + stack push: (stack top childrenNodes at: 2). + self assert: self topEntity sourceCode equals: '{}'. + self assert: (self topEntity isOfType: FASTCSSBlock). + stack pop. + stack pop. + + stack push: (stack top childrenNodes at: 5). + self assert: self topEntity sourceCode equals: ':nth-last-child(-n) {}'. + self assert: (self topEntity isOfType: FASTCSSRuleSet). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 2. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: ':nth-last-child(-n)'. + self assert: (self topEntity isOfType: FASTCSSSelectors). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 1. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: ':nth-last-child(-n)'. + self assert: (self topEntity isOfType: FASTCSSPseudoClassSelector). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 2. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: 'nth-last-child'. + self assert: (self topEntity isOfType: FASTCSSClassName). + stack pop. + + stack push: (stack top childrenNodes at: 2). + self assert: self topEntity sourceCode equals: '(-n)'. + self assert: (self topEntity isOfType: FASTCSSArguments). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 1. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: '-n'. + self assert: (self topEntity isOfType: FASTCSSPlainValue). + stack pop. + stack pop. + stack pop. + stack pop. + + stack push: (stack top childrenNodes at: 2). + self assert: self topEntity sourceCode equals: '{}'. + self assert: (self topEntity isOfType: FASTCSSBlock). + stack pop. + stack pop. + + stack push: (stack top childrenNodes at: 6). + self assert: self topEntity sourceCode equals: ':nth-child(2n of a.external) {}'. + self assert: (self topEntity isOfType: FASTCSSRuleSet). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 2. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: ':nth-child(2n of a.external)'. + self assert: (self topEntity isOfType: FASTCSSSelectors). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 1. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: ':nth-child(2n of a.external)'. + self assert: (self topEntity isOfType: FASTCSSPseudoClassSelector). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 2. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: 'nth-child'. + self assert: (self topEntity isOfType: FASTCSSClassName). + stack pop. + + stack push: (stack top childrenNodes at: 2). + self assert: self topEntity sourceCode equals: '(2n of a.external)'. + self assert: (self topEntity isOfType: FASTCSSArguments). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 2. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: '2n '. + self assert: (self topEntity isOfType: FASTCSSPlainValue). + stack pop. + + stack push: (stack top childrenNodes at: 2). + self assert: self topEntity sourceCode equals: 'a.external'. + self assert: (self topEntity isOfType: FASTCSSClassSelector). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 2. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: 'a'. + self assert: (self topEntity isOfType: FASTCSSTagName). + stack pop. + + stack push: (stack top childrenNodes at: 2). + self assert: self topEntity sourceCode equals: 'external'. + self assert: (self topEntity isOfType: FASTCSSClassName). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 1. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: 'external'. + self assert: (self topEntity isOfType: FASTCSSIdentifier). + stack pop. + stack pop. + stack pop. + stack pop. + stack pop. + stack pop. + + stack push: (stack top childrenNodes at: 2). + self assert: self topEntity sourceCode equals: '{}'. + self assert: (self topEntity isOfType: FASTCSSBlock). + stack pop. + stack pop. + + stack push: (stack top childrenNodes at: 7). + self assert: self topEntity sourceCode equals: ''. + self assert: (self topEntity isOfType: FASTCSSERROR). + self assert: (self topEntity isOfType: FamixTHasImmediateSource). + self assert: (self topEntity isOfType: FamixTSourceAnchor). + stack pop. + self assert: self topEntity source equals: ':nth-child(2) {} +:nth-last-child(-n) {} +:nth-last-child(2n+1) {} +:nth-child(2n + 2) {} +:nth-last-child(-n) {} +:nth-child(2n of a.external) {};' withPlatformLineEndings +] + +{ #category : 'tests' } +FASTCSSImporterTest >> testGeneratedNumbers [ + + "Generated as regression test by TSFASTImporterTestGenerator>>#generateTestNamed:fromCode:protocol: + Regenerate executing: self regenerateTest: #testGeneratedNumbers " + + self parse: 'a { + b: 0.5%; + c: 5em; + margin: 10E3px; + margin: -456.8px; + margin: -5px; + margin: -0.0px; +};'. + + self assert: (fast allWithType: FASTCSSBlock) size equals: 1. + self assert: (fast allWithType: FASTCSSDeclaration) size equals: 6. + self assert: (fast allWithType: FASTCSSERROR) size equals: 1. + self assert: (fast allWithType: FASTCSSFloatValue) size equals: 4. + self assert: (fast allWithType: FASTCSSIntegerValue) size equals: 2. + self assert: (fast allWithType: FASTCSSPropertyName) size equals: 6. + self assert: (fast allWithType: FASTCSSRuleSet) size equals: 1. + self assert: (fast allWithType: FASTCSSSelectors) size equals: 1. + self assert: (fast allWithType: FASTCSSStylesheet) size equals: 1. + self assert: (fast allWithType: FASTCSSTagName) size equals: 1. + self assert: (fast allWithType: FASTCSSUnit) size equals: 6. + + stack push: fast rootEntities anyOne. + self assert: self topEntity sourceCode equals: 'a { + b: 0.5%; + c: 5em; + margin: 10E3px; + margin: -456.8px; + margin: -5px; + margin: -0.0px; +};' withPlatformLineEndings. + self assert: (self topEntity isOfType: FASTCSSStylesheet). + self assert: (self topEntity isOfType: FamixTHasImmediateSource). + self assert: (self topEntity isOfType: FamixTSourceAnchor). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 2. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: 'a { + b: 0.5%; + c: 5em; + margin: 10E3px; + margin: -456.8px; + margin: -5px; + margin: -0.0px; +}' withPlatformLineEndings. + self assert: (self topEntity isOfType: FASTCSSRuleSet). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 2. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: 'a'. + self assert: (self topEntity isOfType: FASTCSSSelectors). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 1. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: 'a'. + self assert: (self topEntity isOfType: FASTCSSTagName). + stack pop. + stack pop. + + stack push: (stack top childrenNodes at: 2). + self assert: self topEntity sourceCode equals: '{ + b: 0.5%; + c: 5em; + margin: 10E3px; + margin: -456.8px; + margin: -5px; + margin: -0.0px; +}' withPlatformLineEndings. + self assert: (self topEntity isOfType: FASTCSSBlock). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 6. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: 'b: 0.5%;'. + self assert: (self topEntity isOfType: FASTCSSDeclaration). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 2. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: 'b'. + self assert: (self topEntity isOfType: FASTCSSPropertyName). + stack pop. + + stack push: (stack top childrenNodes at: 2). + self assert: self topEntity sourceCode equals: '0.5%'. + self assert: (self topEntity isOfType: FASTCSSFloatValue). + + "Testing value of monovalue relation childrenNode" + self assert: self topEntity childrenNode isNotNil. + + stack push: self topEntity childrenNode. + self assert: self topEntity sourceCode equals: '%'. + self assert: (self topEntity isOfType: FASTCSSUnit). + stack pop. + stack pop. + stack pop. + + stack push: (stack top childrenNodes at: 2). + self assert: self topEntity sourceCode equals: 'c: 5em;'. + self assert: (self topEntity isOfType: FASTCSSDeclaration). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 2. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: 'c'. + self assert: (self topEntity isOfType: FASTCSSPropertyName). + stack pop. + + stack push: (stack top childrenNodes at: 2). + self assert: self topEntity sourceCode equals: '5em'. + self assert: (self topEntity isOfType: FASTCSSIntegerValue). + + "Testing value of monovalue relation childrenNode" + self assert: self topEntity childrenNode isNotNil. + + stack push: self topEntity childrenNode. + self assert: self topEntity sourceCode equals: 'em'. + self assert: (self topEntity isOfType: FASTCSSUnit). + stack pop. + stack pop. + stack pop. + + stack push: (stack top childrenNodes at: 3). + self assert: self topEntity sourceCode equals: 'margin: 10E3px;'. + self assert: (self topEntity isOfType: FASTCSSDeclaration). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 2. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: 'margin'. + self assert: (self topEntity isOfType: FASTCSSPropertyName). + stack pop. + + stack push: (stack top childrenNodes at: 2). + self assert: self topEntity sourceCode equals: '10E3px'. + self assert: (self topEntity isOfType: FASTCSSFloatValue). + + "Testing value of monovalue relation childrenNode" + self assert: self topEntity childrenNode isNotNil. + + stack push: self topEntity childrenNode. + self assert: self topEntity sourceCode equals: 'px'. + self assert: (self topEntity isOfType: FASTCSSUnit). + stack pop. + stack pop. + stack pop. + + stack push: (stack top childrenNodes at: 4). + self assert: self topEntity sourceCode equals: 'margin: -456.8px;'. + self assert: (self topEntity isOfType: FASTCSSDeclaration). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 2. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: 'margin'. + self assert: (self topEntity isOfType: FASTCSSPropertyName). + stack pop. + + stack push: (stack top childrenNodes at: 2). + self assert: self topEntity sourceCode equals: '-456.8px'. + self assert: (self topEntity isOfType: FASTCSSFloatValue). + + "Testing value of monovalue relation childrenNode" + self assert: self topEntity childrenNode isNotNil. + + stack push: self topEntity childrenNode. + self assert: self topEntity sourceCode equals: 'px'. + self assert: (self topEntity isOfType: FASTCSSUnit). + stack pop. + stack pop. + stack pop. + + stack push: (stack top childrenNodes at: 5). + self assert: self topEntity sourceCode equals: 'margin: -5px;'. + self assert: (self topEntity isOfType: FASTCSSDeclaration). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 2. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: 'margin'. + self assert: (self topEntity isOfType: FASTCSSPropertyName). + stack pop. + + stack push: (stack top childrenNodes at: 2). + self assert: self topEntity sourceCode equals: '-5px'. + self assert: (self topEntity isOfType: FASTCSSIntegerValue). + + "Testing value of monovalue relation childrenNode" + self assert: self topEntity childrenNode isNotNil. + + stack push: self topEntity childrenNode. + self assert: self topEntity sourceCode equals: 'px'. + self assert: (self topEntity isOfType: FASTCSSUnit). + stack pop. + stack pop. + stack pop. + + stack push: (stack top childrenNodes at: 6). + self assert: self topEntity sourceCode equals: 'margin: -0.0px;'. + self assert: (self topEntity isOfType: FASTCSSDeclaration). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 2. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: 'margin'. + self assert: (self topEntity isOfType: FASTCSSPropertyName). + stack pop. + + stack push: (stack top childrenNodes at: 2). + self assert: self topEntity sourceCode equals: '-0.0px'. + self assert: (self topEntity isOfType: FASTCSSFloatValue). + + "Testing value of monovalue relation childrenNode" + self assert: self topEntity childrenNode isNotNil. + + stack push: self topEntity childrenNode. + self assert: self topEntity sourceCode equals: 'px'. + self assert: (self topEntity isOfType: FASTCSSUnit). + stack pop. + stack pop. + stack pop. + stack pop. + stack pop. + + stack push: (stack top childrenNodes at: 2). + self assert: self topEntity sourceCode equals: ''. + self assert: (self topEntity isOfType: FASTCSSERROR). + self assert: (self topEntity isOfType: FamixTHasImmediateSource). + self assert: (self topEntity isOfType: FamixTSourceAnchor). + stack pop. + self assert: self topEntity source equals: 'a { + b: 0.5%; + c: 5em; + margin: 10E3px; + margin: -456.8px; + margin: -5px; + margin: -0.0px; +};' withPlatformLineEndings +] + +{ #category : 'tests' } +FASTCSSImporterTest >> testGeneratedOtherAtstatements [ + + "Generated as regression test by TSFASTImporterTestGenerator>>#generateTestNamed:fromCode:protocol: + Regenerate executing: self regenerateTest: #testGeneratedOtherAtstatements " + + self parse: '@font-face { + font-family: "Open Sans"; + src: url("/a") format("woff2"), url("/b/c") format("woff"); +};'. + + self assert: (fast allWithType: FASTCSSArguments) size equals: 4. + self assert: (fast allWithType: FASTCSSAtKeyword) size equals: 1. + self assert: (fast allWithType: FASTCSSAtRule) size equals: 1. + self assert: (fast allWithType: FASTCSSBlock) size equals: 1. + self assert: (fast allWithType: FASTCSSCallExpression) size equals: 4. + self assert: (fast allWithType: FASTCSSDeclaration) size equals: 2. + self assert: (fast allWithType: FASTCSSERROR) size equals: 1. + self assert: (fast allWithType: FASTCSSFunctionName) size equals: 4. + self assert: (fast allWithType: FASTCSSPropertyName) size equals: 2. + self assert: (fast allWithType: FASTCSSStringContent) size equals: 5. + self assert: (fast allWithType: FASTCSSStringValue) size equals: 5. + self assert: (fast allWithType: FASTCSSStylesheet) size equals: 1. + + stack push: fast rootEntities anyOne. + self assert: self topEntity sourceCode equals: '@font-face { + font-family: "Open Sans"; + src: url("/a") format("woff2"), url("/b/c") format("woff"); +};' withPlatformLineEndings. + self assert: (self topEntity isOfType: FASTCSSStylesheet). + self assert: (self topEntity isOfType: FamixTHasImmediateSource). + self assert: (self topEntity isOfType: FamixTSourceAnchor). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 2. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: '@font-face { + font-family: "Open Sans"; + src: url("/a") format("woff2"), url("/b/c") format("woff"); +}' withPlatformLineEndings. + self assert: (self topEntity isOfType: FASTCSSAtRule). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 2. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: '@font-face'. + self assert: (self topEntity isOfType: FASTCSSAtKeyword). + stack pop. + + stack push: (stack top childrenNodes at: 2). + self assert: self topEntity sourceCode equals: '{ + font-family: "Open Sans"; + src: url("/a") format("woff2"), url("/b/c") format("woff"); +}' withPlatformLineEndings. + self assert: (self topEntity isOfType: FASTCSSBlock). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 2. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: 'font-family: "Open Sans";'. + self assert: (self topEntity isOfType: FASTCSSDeclaration). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 2. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: 'font-family'. + self assert: (self topEntity isOfType: FASTCSSPropertyName). + stack pop. + + stack push: (stack top childrenNodes at: 2). + self assert: self topEntity sourceCode equals: '"Open Sans"'. + self assert: (self topEntity isOfType: FASTCSSStringValue). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 1. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: 'Open Sans'. + self assert: (self topEntity isOfType: FASTCSSStringContent). + stack pop. + stack pop. + stack pop. + + stack push: (stack top childrenNodes at: 2). + self assert: self topEntity sourceCode equals: 'src: url("/a") format("woff2"), url("/b/c") format("woff");'. + self assert: (self topEntity isOfType: FASTCSSDeclaration). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 5. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: 'src'. + self assert: (self topEntity isOfType: FASTCSSPropertyName). + stack pop. + + stack push: (stack top childrenNodes at: 2). + self assert: self topEntity sourceCode equals: 'url("/a")'. + self assert: (self topEntity isOfType: FASTCSSCallExpression). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 2. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: 'url'. + self assert: (self topEntity isOfType: FASTCSSFunctionName). + stack pop. + + stack push: (stack top childrenNodes at: 2). + self assert: self topEntity sourceCode equals: '("/a")'. + self assert: (self topEntity isOfType: FASTCSSArguments). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 1. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: '"/a"'. + self assert: (self topEntity isOfType: FASTCSSStringValue). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 1. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: '/a'. + self assert: (self topEntity isOfType: FASTCSSStringContent). + stack pop. + stack pop. + stack pop. + stack pop. + + stack push: (stack top childrenNodes at: 3). + self assert: self topEntity sourceCode equals: 'format("woff2")'. + self assert: (self topEntity isOfType: FASTCSSCallExpression). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 2. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: 'format'. + self assert: (self topEntity isOfType: FASTCSSFunctionName). + stack pop. + + stack push: (stack top childrenNodes at: 2). + self assert: self topEntity sourceCode equals: '("woff2")'. + self assert: (self topEntity isOfType: FASTCSSArguments). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 1. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: '"woff2"'. + self assert: (self topEntity isOfType: FASTCSSStringValue). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 1. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: 'woff2'. + self assert: (self topEntity isOfType: FASTCSSStringContent). + stack pop. + stack pop. + stack pop. + stack pop. + + stack push: (stack top childrenNodes at: 4). + self assert: self topEntity sourceCode equals: 'url("/b/c")'. + self assert: (self topEntity isOfType: FASTCSSCallExpression). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 2. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: 'url'. + self assert: (self topEntity isOfType: FASTCSSFunctionName). + stack pop. + + stack push: (stack top childrenNodes at: 2). + self assert: self topEntity sourceCode equals: '("/b/c")'. + self assert: (self topEntity isOfType: FASTCSSArguments). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 1. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: '"/b/c"'. + self assert: (self topEntity isOfType: FASTCSSStringValue). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 1. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: '/b/c'. + self assert: (self topEntity isOfType: FASTCSSStringContent). + stack pop. + stack pop. + stack pop. + stack pop. + + stack push: (stack top childrenNodes at: 5). + self assert: self topEntity sourceCode equals: 'format("woff")'. + self assert: (self topEntity isOfType: FASTCSSCallExpression). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 2. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: 'format'. + self assert: (self topEntity isOfType: FASTCSSFunctionName). + stack pop. + + stack push: (stack top childrenNodes at: 2). + self assert: self topEntity sourceCode equals: '("woff")'. + self assert: (self topEntity isOfType: FASTCSSArguments). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 1. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: '"woff"'. + self assert: (self topEntity isOfType: FASTCSSStringValue). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 1. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: 'woff'. + self assert: (self topEntity isOfType: FASTCSSStringContent). + stack pop. + stack pop. + stack pop. + stack pop. + stack pop. + stack pop. + stack pop. + + stack push: (stack top childrenNodes at: 2). + self assert: self topEntity sourceCode equals: ''. + self assert: (self topEntity isOfType: FASTCSSERROR). + self assert: (self topEntity isOfType: FamixTHasImmediateSource). + self assert: (self topEntity isOfType: FamixTSourceAnchor). + stack pop. + self assert: self topEntity source equals: '@font-face { + font-family: "Open Sans"; + src: url("/a") format("woff2"), url("/b/c") format("woff"); +};' withPlatformLineEndings +] + +{ #category : 'tests' } +FASTCSSImporterTest >> testGeneratedPostCSS [ + + "Generated as regression test by TSFASTImporterTestGenerator>>#generateTestNamed:fromCode:protocol: + Regenerate executing: self regenerateTest: #testGeneratedPostCSS " + + self parse: '.selector { + @apply variable-a meta-variable-b lots-of-combined-properties-c !important; +} + +@layer components { + .btn-blue { + @apply --mixin sm:space-x-0 left-[11%] border-foreground/20 !important !text-white; + } +} + +@layer utilities { + .btn { + } +};'. + + self assert: (fast allWithType: FASTCSSAtKeyword) size equals: 4. + self assert: (fast allWithType: FASTCSSAtRule) size equals: 2. + self assert: (fast allWithType: FASTCSSBlock) size equals: 5. + self assert: (fast allWithType: FASTCSSClassName) size equals: 3. + self assert: (fast allWithType: FASTCSSClassSelector) size equals: 3. + self assert: (fast allWithType: FASTCSSERROR) size equals: 1. + self assert: (fast allWithType: FASTCSSGridValue) size equals: 1. + self assert: (fast allWithType: FASTCSSIdentifier) size equals: 3. + self assert: (fast allWithType: FASTCSSImportant) size equals: 2. + self assert: (fast allWithType: FASTCSSImportantValue) size equals: 1. + self assert: (fast allWithType: FASTCSSIntegerValue) size equals: 1. + self assert: (fast allWithType: FASTCSSKeywordQuery) size equals: 2. + self assert: (fast allWithType: FASTCSSPlainValue) size equals: 7. + self assert: (fast allWithType: FASTCSSPostcssStatement) size equals: 2. + self assert: (fast allWithType: FASTCSSRuleSet) size equals: 3. + self assert: (fast allWithType: FASTCSSSelectors) size equals: 3. + self assert: (fast allWithType: FASTCSSStylesheet) size equals: 1. + self assert: (fast allWithType: FASTCSSUnit) size equals: 1. + + stack push: fast rootEntities anyOne. + self assert: self topEntity sourceCode equals: '.selector { + @apply variable-a meta-variable-b lots-of-combined-properties-c !important; +} + +@layer components { + .btn-blue { + @apply --mixin sm:space-x-0 left-[11%] border-foreground/20 !important !text-white; + } +} + +@layer utilities { + .btn { + } +};' withPlatformLineEndings. + self assert: (self topEntity isOfType: FASTCSSStylesheet). + self assert: (self topEntity isOfType: FamixTHasImmediateSource). + self assert: (self topEntity isOfType: FamixTSourceAnchor). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 4. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: '.selector { + @apply variable-a meta-variable-b lots-of-combined-properties-c !important; +}' withPlatformLineEndings. + self assert: (self topEntity isOfType: FASTCSSRuleSet). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 2. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: '.selector'. + self assert: (self topEntity isOfType: FASTCSSSelectors). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 1. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: '.selector'. + self assert: (self topEntity isOfType: FASTCSSClassSelector). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 1. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: 'selector'. + self assert: (self topEntity isOfType: FASTCSSClassName). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 1. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: 'selector'. + self assert: (self topEntity isOfType: FASTCSSIdentifier). + stack pop. + stack pop. + stack pop. + stack pop. + + stack push: (stack top childrenNodes at: 2). + self assert: self topEntity sourceCode equals: '{ + @apply variable-a meta-variable-b lots-of-combined-properties-c !important; +}' withPlatformLineEndings. + self assert: (self topEntity isOfType: FASTCSSBlock). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 1. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: '@apply variable-a meta-variable-b lots-of-combined-properties-c !important;'. + self assert: (self topEntity isOfType: FASTCSSPostcssStatement). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 5. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: '@apply'. + self assert: (self topEntity isOfType: FASTCSSAtKeyword). + stack pop. + + stack push: (stack top childrenNodes at: 2). + self assert: self topEntity sourceCode equals: 'variable-a'. + self assert: (self topEntity isOfType: FASTCSSPlainValue). + stack pop. + + stack push: (stack top childrenNodes at: 3). + self assert: self topEntity sourceCode equals: 'meta-variable-b'. + self assert: (self topEntity isOfType: FASTCSSPlainValue). + stack pop. + + stack push: (stack top childrenNodes at: 4). + self assert: self topEntity sourceCode equals: 'lots-of-combined-properties-c'. + self assert: (self topEntity isOfType: FASTCSSPlainValue). + stack pop. + + stack push: (stack top childrenNodes at: 5). + self assert: self topEntity sourceCode equals: '!important'. + self assert: (self topEntity isOfType: FASTCSSImportant). + stack pop. + stack pop. + stack pop. + stack pop. + + stack push: (stack top childrenNodes at: 2). + self assert: self topEntity sourceCode equals: '@layer components { + .btn-blue { + @apply --mixin sm:space-x-0 left-[11%] border-foreground/20 !important !text-white; + } +}' withPlatformLineEndings. + self assert: (self topEntity isOfType: FASTCSSAtRule). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 3. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: '@layer'. + self assert: (self topEntity isOfType: FASTCSSAtKeyword). + stack pop. + + stack push: (stack top childrenNodes at: 2). + self assert: self topEntity sourceCode equals: 'components'. + self assert: (self topEntity isOfType: FASTCSSKeywordQuery). + stack pop. + + stack push: (stack top childrenNodes at: 3). + self assert: self topEntity sourceCode equals: '{ + .btn-blue { + @apply --mixin sm:space-x-0 left-[11%] border-foreground/20 !important !text-white; + } +}' withPlatformLineEndings. + self assert: (self topEntity isOfType: FASTCSSBlock). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 1. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: '.btn-blue { + @apply --mixin sm:space-x-0 left-[11%] border-foreground/20 !important !text-white; + }' withPlatformLineEndings. + self assert: (self topEntity isOfType: FASTCSSRuleSet). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 2. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: '.btn-blue'. + self assert: (self topEntity isOfType: FASTCSSSelectors). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 1. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: '.btn-blue'. + self assert: (self topEntity isOfType: FASTCSSClassSelector). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 1. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: 'btn-blue'. + self assert: (self topEntity isOfType: FASTCSSClassName). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 1. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: 'btn-blue'. + self assert: (self topEntity isOfType: FASTCSSIdentifier). + stack pop. + stack pop. + stack pop. + stack pop. + + stack push: (stack top childrenNodes at: 2). + self assert: self topEntity sourceCode equals: '{ + @apply --mixin sm:space-x-0 left-[11%] border-foreground/20 !important !text-white; + }' withPlatformLineEndings. + self assert: (self topEntity isOfType: FASTCSSBlock). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 1. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: '@apply --mixin sm:space-x-0 left-[11%] border-foreground/20 !important !text-white;'. + self assert: (self topEntity isOfType: FASTCSSPostcssStatement). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 8. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: '@apply'. + self assert: (self topEntity isOfType: FASTCSSAtKeyword). + stack pop. + + stack push: (stack top childrenNodes at: 2). + self assert: self topEntity sourceCode equals: '--mixin'. + self assert: (self topEntity isOfType: FASTCSSPlainValue). + stack pop. + + stack push: (stack top childrenNodes at: 3). + self assert: self topEntity sourceCode equals: 'sm:space-x-0'. + self assert: (self topEntity isOfType: FASTCSSPlainValue). + stack pop. + + stack push: (stack top childrenNodes at: 4). + self assert: self topEntity sourceCode equals: 'left-'. + self assert: (self topEntity isOfType: FASTCSSPlainValue). + stack pop. + + stack push: (stack top childrenNodes at: 5). + self assert: self topEntity sourceCode equals: '[11%]'. + self assert: (self topEntity isOfType: FASTCSSGridValue). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 1. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: '11%'. + self assert: (self topEntity isOfType: FASTCSSIntegerValue). + + "Testing value of monovalue relation childrenNode" + self assert: self topEntity childrenNode isNotNil. + + stack push: self topEntity childrenNode. + self assert: self topEntity sourceCode equals: '%'. + self assert: (self topEntity isOfType: FASTCSSUnit). + stack pop. + stack pop. + stack pop. + + stack push: (stack top childrenNodes at: 6). + self assert: self topEntity sourceCode equals: 'border-foreground/20'. + self assert: (self topEntity isOfType: FASTCSSPlainValue). + stack pop. + + stack push: (stack top childrenNodes at: 7). + self assert: self topEntity sourceCode equals: '!important'. + self assert: (self topEntity isOfType: FASTCSSImportant). + stack pop. + + stack push: (stack top childrenNodes at: 8). + self assert: self topEntity sourceCode equals: '!text-white'. + self assert: (self topEntity isOfType: FASTCSSImportantValue). + stack pop. + stack pop. + stack pop. + stack pop. + stack pop. + stack pop. + + stack push: (stack top childrenNodes at: 3). + self assert: self topEntity sourceCode equals: '@layer utilities { + .btn { + } +}' withPlatformLineEndings. + self assert: (self topEntity isOfType: FASTCSSAtRule). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 3. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: '@layer'. + self assert: (self topEntity isOfType: FASTCSSAtKeyword). + stack pop. + + stack push: (stack top childrenNodes at: 2). + self assert: self topEntity sourceCode equals: 'utilities'. + self assert: (self topEntity isOfType: FASTCSSKeywordQuery). + stack pop. + + stack push: (stack top childrenNodes at: 3). + self assert: self topEntity sourceCode equals: '{ + .btn { + } +}' withPlatformLineEndings. + self assert: (self topEntity isOfType: FASTCSSBlock). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 1. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: '.btn { + }' withPlatformLineEndings. + self assert: (self topEntity isOfType: FASTCSSRuleSet). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 2. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: '.btn'. + self assert: (self topEntity isOfType: FASTCSSSelectors). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 1. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: '.btn'. + self assert: (self topEntity isOfType: FASTCSSClassSelector). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 1. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: 'btn'. + self assert: (self topEntity isOfType: FASTCSSClassName). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 1. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: 'btn'. + self assert: (self topEntity isOfType: FASTCSSIdentifier). + stack pop. + stack pop. + stack pop. + stack pop. + + stack push: (stack top childrenNodes at: 2). + self assert: self topEntity sourceCode equals: '{ + }' withPlatformLineEndings. + self assert: (self topEntity isOfType: FASTCSSBlock). + stack pop. + stack pop. + stack pop. + stack pop. + + stack push: (stack top childrenNodes at: 4). + self assert: self topEntity sourceCode equals: ''. + self assert: (self topEntity isOfType: FASTCSSERROR). + self assert: (self topEntity isOfType: FamixTHasImmediateSource). + self assert: (self topEntity isOfType: FamixTSourceAnchor). + stack pop. + self assert: self topEntity source equals: '.selector { + @apply variable-a meta-variable-b lots-of-combined-properties-c !important; +} + +@layer components { + .btn-blue { + @apply --mixin sm:space-x-0 left-[11%] border-foreground/20 !important !text-white; + } +} + +@layer utilities { + .btn { + } +};' withPlatformLineEndings +] + +{ #category : 'tests' } +FASTCSSImporterTest >> testGeneratedPseudoclassSelectors [ + + "Generated as regression test by TSFASTImporterTestGenerator>>#generateTestNamed:fromCode:protocol: + Regenerate executing: self regenerateTest: #testGeneratedPseudoclassSelectors " + + self parse: 'a:hover {} +:nth-child(2) {} +p:has(li) {} +p:is(.foo) {} +p:has(li.foo) {} +*:where(li#foo) {} +p:has(.foo, .bar) {} +a:not([href]) {} +:host([a="b"]:hover) {} +:host([a=''b'']:hover) {} +:host {} +:host { display: block; } +:host(div.foo) {} +:nth-child(2n of a.external) {};'. + + self assert: (fast allWithType: FASTCSSArguments) size equals: 11. + self assert: (fast allWithType: FASTCSSAttributeName) size equals: 3. + self assert: (fast allWithType: FASTCSSAttributeSelector) size equals: 3. + self assert: (fast allWithType: FASTCSSBlock) size equals: 14. + self assert: (fast allWithType: FASTCSSClassName) size equals: 22. + self assert: (fast allWithType: FASTCSSClassSelector) size equals: 6. + self assert: (fast allWithType: FASTCSSDeclaration) size equals: 1. + self assert: (fast allWithType: FASTCSSERROR) size equals: 1. + self assert: (fast allWithType: FASTCSSIdName) size equals: 1. + self assert: (fast allWithType: FASTCSSIdSelector) size equals: 1. + self assert: (fast allWithType: FASTCSSIdentifier) size equals: 9. + self assert: (fast allWithType: FASTCSSIntegerValue) size equals: 1. + self assert: (fast allWithType: FASTCSSPlainValue) size equals: 2. + self assert: (fast allWithType: FASTCSSPropertyName) size equals: 1. + self assert: (fast allWithType: FASTCSSPseudoClassSelector) size equals: 16. + self assert: (fast allWithType: FASTCSSRuleSet) size equals: 14. + self assert: (fast allWithType: FASTCSSSelectors) size equals: 14. + self assert: (fast allWithType: FASTCSSStringContent) size equals: 2. + self assert: (fast allWithType: FASTCSSStringValue) size equals: 2. + self assert: (fast allWithType: FASTCSSStylesheet) size equals: 1. + self assert: (fast allWithType: FASTCSSTagName) size equals: 11. + self assert: (fast allWithType: FASTCSSUniversalSelector) size equals: 1. + + stack push: fast rootEntities anyOne. + self assert: self topEntity sourceCode equals: 'a:hover {} +:nth-child(2) {} +p:has(li) {} +p:is(.foo) {} +p:has(li.foo) {} +*:where(li#foo) {} +p:has(.foo, .bar) {} +a:not([href]) {} +:host([a="b"]:hover) {} +:host([a=''b'']:hover) {} +:host {} +:host { display: block; } +:host(div.foo) {} +:nth-child(2n of a.external) {};' withPlatformLineEndings. + self assert: (self topEntity isOfType: FASTCSSStylesheet). + self assert: (self topEntity isOfType: FamixTHasImmediateSource). + self assert: (self topEntity isOfType: FamixTSourceAnchor). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 15. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: 'a:hover {}'. + self assert: (self topEntity isOfType: FASTCSSRuleSet). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 2. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: 'a:hover'. + self assert: (self topEntity isOfType: FASTCSSSelectors). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 1. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: 'a:hover'. + self assert: (self topEntity isOfType: FASTCSSPseudoClassSelector). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 2. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: 'a'. + self assert: (self topEntity isOfType: FASTCSSTagName). + stack pop. + + stack push: (stack top childrenNodes at: 2). + self assert: self topEntity sourceCode equals: 'hover'. + self assert: (self topEntity isOfType: FASTCSSClassName). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 1. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: 'hover'. + self assert: (self topEntity isOfType: FASTCSSIdentifier). + stack pop. + stack pop. + stack pop. + stack pop. + + stack push: (stack top childrenNodes at: 2). + self assert: self topEntity sourceCode equals: '{}'. + self assert: (self topEntity isOfType: FASTCSSBlock). + stack pop. + stack pop. + + stack push: (stack top childrenNodes at: 2). + self assert: self topEntity sourceCode equals: ':nth-child(2) {}'. + self assert: (self topEntity isOfType: FASTCSSRuleSet). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 2. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: ':nth-child(2)'. + self assert: (self topEntity isOfType: FASTCSSSelectors). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 1. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: ':nth-child(2)'. + self assert: (self topEntity isOfType: FASTCSSPseudoClassSelector). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 2. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: 'nth-child'. + self assert: (self topEntity isOfType: FASTCSSClassName). + stack pop. + + stack push: (stack top childrenNodes at: 2). + self assert: self topEntity sourceCode equals: '(2)'. + self assert: (self topEntity isOfType: FASTCSSArguments). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 1. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: '2'. + self assert: (self topEntity isOfType: FASTCSSIntegerValue). + stack pop. + stack pop. + stack pop. + stack pop. + + stack push: (stack top childrenNodes at: 2). + self assert: self topEntity sourceCode equals: '{}'. + self assert: (self topEntity isOfType: FASTCSSBlock). + stack pop. + stack pop. + + stack push: (stack top childrenNodes at: 3). + self assert: self topEntity sourceCode equals: 'p:has(li) {}'. + self assert: (self topEntity isOfType: FASTCSSRuleSet). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 2. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: 'p:has(li)'. + self assert: (self topEntity isOfType: FASTCSSSelectors). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 1. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: 'p:has(li)'. + self assert: (self topEntity isOfType: FASTCSSPseudoClassSelector). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 3. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: 'p'. + self assert: (self topEntity isOfType: FASTCSSTagName). + stack pop. + + stack push: (stack top childrenNodes at: 2). + self assert: self topEntity sourceCode equals: 'has'. + self assert: (self topEntity isOfType: FASTCSSClassName). + stack pop. + + stack push: (stack top childrenNodes at: 3). + self assert: self topEntity sourceCode equals: '(li)'. + self assert: (self topEntity isOfType: FASTCSSArguments). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 1. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: 'li'. + self assert: (self topEntity isOfType: FASTCSSTagName). + stack pop. + stack pop. + stack pop. + stack pop. + + stack push: (stack top childrenNodes at: 2). + self assert: self topEntity sourceCode equals: '{}'. + self assert: (self topEntity isOfType: FASTCSSBlock). + stack pop. + stack pop. + + stack push: (stack top childrenNodes at: 4). + self assert: self topEntity sourceCode equals: 'p:is(.foo) {}'. + self assert: (self topEntity isOfType: FASTCSSRuleSet). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 2. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: 'p:is(.foo)'. + self assert: (self topEntity isOfType: FASTCSSSelectors). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 1. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: 'p:is(.foo)'. + self assert: (self topEntity isOfType: FASTCSSPseudoClassSelector). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 3. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: 'p'. + self assert: (self topEntity isOfType: FASTCSSTagName). + stack pop. + + stack push: (stack top childrenNodes at: 2). + self assert: self topEntity sourceCode equals: 'is'. + self assert: (self topEntity isOfType: FASTCSSClassName). + stack pop. + + stack push: (stack top childrenNodes at: 3). + self assert: self topEntity sourceCode equals: '(.foo)'. + self assert: (self topEntity isOfType: FASTCSSArguments). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 1. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: '.foo'. + self assert: (self topEntity isOfType: FASTCSSClassSelector). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 1. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: 'foo'. + self assert: (self topEntity isOfType: FASTCSSClassName). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 1. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: 'foo'. + self assert: (self topEntity isOfType: FASTCSSIdentifier). + stack pop. + stack pop. + stack pop. + stack pop. + stack pop. + stack pop. + + stack push: (stack top childrenNodes at: 2). + self assert: self topEntity sourceCode equals: '{}'. + self assert: (self topEntity isOfType: FASTCSSBlock). + stack pop. + stack pop. + + stack push: (stack top childrenNodes at: 5). + self assert: self topEntity sourceCode equals: 'p:has(li.foo) {}'. + self assert: (self topEntity isOfType: FASTCSSRuleSet). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 2. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: 'p:has(li.foo)'. + self assert: (self topEntity isOfType: FASTCSSSelectors). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 1. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: 'p:has(li.foo)'. + self assert: (self topEntity isOfType: FASTCSSPseudoClassSelector). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 3. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: 'p'. + self assert: (self topEntity isOfType: FASTCSSTagName). + stack pop. + + stack push: (stack top childrenNodes at: 2). + self assert: self topEntity sourceCode equals: 'has'. + self assert: (self topEntity isOfType: FASTCSSClassName). + stack pop. + + stack push: (stack top childrenNodes at: 3). + self assert: self topEntity sourceCode equals: '(li.foo)'. + self assert: (self topEntity isOfType: FASTCSSArguments). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 1. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: 'li.foo'. + self assert: (self topEntity isOfType: FASTCSSClassSelector). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 2. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: 'li'. + self assert: (self topEntity isOfType: FASTCSSTagName). + stack pop. + + stack push: (stack top childrenNodes at: 2). + self assert: self topEntity sourceCode equals: 'foo'. + self assert: (self topEntity isOfType: FASTCSSClassName). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 1. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: 'foo'. + self assert: (self topEntity isOfType: FASTCSSIdentifier). + stack pop. + stack pop. + stack pop. + stack pop. + stack pop. + stack pop. + + stack push: (stack top childrenNodes at: 2). + self assert: self topEntity sourceCode equals: '{}'. + self assert: (self topEntity isOfType: FASTCSSBlock). + stack pop. + stack pop. + + stack push: (stack top childrenNodes at: 6). + self assert: self topEntity sourceCode equals: '*:where(li#foo) {}'. + self assert: (self topEntity isOfType: FASTCSSRuleSet). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 2. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: '*:where(li#foo)'. + self assert: (self topEntity isOfType: FASTCSSSelectors). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 1. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: '*:where(li#foo)'. + self assert: (self topEntity isOfType: FASTCSSPseudoClassSelector). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 3. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: '*'. + self assert: (self topEntity isOfType: FASTCSSUniversalSelector). + stack pop. + + stack push: (stack top childrenNodes at: 2). + self assert: self topEntity sourceCode equals: 'where'. + self assert: (self topEntity isOfType: FASTCSSClassName). + stack pop. + + stack push: (stack top childrenNodes at: 3). + self assert: self topEntity sourceCode equals: '(li#foo)'. + self assert: (self topEntity isOfType: FASTCSSArguments). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 1. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: 'li#foo'. + self assert: (self topEntity isOfType: FASTCSSIdSelector). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 2. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: 'li'. + self assert: (self topEntity isOfType: FASTCSSTagName). + stack pop. + + stack push: (stack top childrenNodes at: 2). + self assert: self topEntity sourceCode equals: 'foo'. + self assert: (self topEntity isOfType: FASTCSSIdName). + stack pop. + stack pop. + stack pop. + stack pop. + stack pop. + + stack push: (stack top childrenNodes at: 2). + self assert: self topEntity sourceCode equals: '{}'. + self assert: (self topEntity isOfType: FASTCSSBlock). + stack pop. + stack pop. + + stack push: (stack top childrenNodes at: 7). + self assert: self topEntity sourceCode equals: 'p:has(.foo, .bar) {}'. + self assert: (self topEntity isOfType: FASTCSSRuleSet). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 2. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: 'p:has(.foo, .bar)'. + self assert: (self topEntity isOfType: FASTCSSSelectors). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 1. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: 'p:has(.foo, .bar)'. + self assert: (self topEntity isOfType: FASTCSSPseudoClassSelector). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 3. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: 'p'. + self assert: (self topEntity isOfType: FASTCSSTagName). + stack pop. + + stack push: (stack top childrenNodes at: 2). + self assert: self topEntity sourceCode equals: 'has'. + self assert: (self topEntity isOfType: FASTCSSClassName). + stack pop. + + stack push: (stack top childrenNodes at: 3). + self assert: self topEntity sourceCode equals: '(.foo, .bar)'. + self assert: (self topEntity isOfType: FASTCSSArguments). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 2. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: '.foo'. + self assert: (self topEntity isOfType: FASTCSSClassSelector). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 1. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: 'foo'. + self assert: (self topEntity isOfType: FASTCSSClassName). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 1. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: 'foo'. + self assert: (self topEntity isOfType: FASTCSSIdentifier). + stack pop. + stack pop. + stack pop. + + stack push: (stack top childrenNodes at: 2). + self assert: self topEntity sourceCode equals: '.bar'. + self assert: (self topEntity isOfType: FASTCSSClassSelector). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 1. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: 'bar'. + self assert: (self topEntity isOfType: FASTCSSClassName). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 1. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: 'bar'. + self assert: (self topEntity isOfType: FASTCSSIdentifier). + stack pop. + stack pop. + stack pop. + stack pop. + stack pop. + stack pop. + + stack push: (stack top childrenNodes at: 2). + self assert: self topEntity sourceCode equals: '{}'. + self assert: (self topEntity isOfType: FASTCSSBlock). + stack pop. + stack pop. + + stack push: (stack top childrenNodes at: 8). + self assert: self topEntity sourceCode equals: 'a:not([href]) {}'. + self assert: (self topEntity isOfType: FASTCSSRuleSet). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 2. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: 'a:not([href])'. + self assert: (self topEntity isOfType: FASTCSSSelectors). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 1. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: 'a:not([href])'. + self assert: (self topEntity isOfType: FASTCSSPseudoClassSelector). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 3. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: 'a'. + self assert: (self topEntity isOfType: FASTCSSTagName). + stack pop. + + stack push: (stack top childrenNodes at: 2). + self assert: self topEntity sourceCode equals: 'not'. + self assert: (self topEntity isOfType: FASTCSSClassName). + stack pop. + + stack push: (stack top childrenNodes at: 3). + self assert: self topEntity sourceCode equals: '([href])'. + self assert: (self topEntity isOfType: FASTCSSArguments). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 1. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: '[href]'. + self assert: (self topEntity isOfType: FASTCSSAttributeSelector). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 1. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: 'href'. + self assert: (self topEntity isOfType: FASTCSSAttributeName). + stack pop. + stack pop. + stack pop. + stack pop. + stack pop. + + stack push: (stack top childrenNodes at: 2). + self assert: self topEntity sourceCode equals: '{}'. + self assert: (self topEntity isOfType: FASTCSSBlock). + stack pop. + stack pop. + + stack push: (stack top childrenNodes at: 9). + self assert: self topEntity sourceCode equals: ':host([a="b"]:hover) {}'. + self assert: (self topEntity isOfType: FASTCSSRuleSet). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 2. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: ':host([a="b"]:hover)'. + self assert: (self topEntity isOfType: FASTCSSSelectors). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 1. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: ':host([a="b"]:hover)'. + self assert: (self topEntity isOfType: FASTCSSPseudoClassSelector). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 2. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: 'host'. + self assert: (self topEntity isOfType: FASTCSSClassName). + stack pop. + + stack push: (stack top childrenNodes at: 2). + self assert: self topEntity sourceCode equals: '([a="b"]:hover)'. + self assert: (self topEntity isOfType: FASTCSSArguments). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 1. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: '[a="b"]:hover'. + self assert: (self topEntity isOfType: FASTCSSPseudoClassSelector). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 2. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: '[a="b"]'. + self assert: (self topEntity isOfType: FASTCSSAttributeSelector). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 2. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: 'a'. + self assert: (self topEntity isOfType: FASTCSSAttributeName). + stack pop. + + stack push: (stack top childrenNodes at: 2). + self assert: self topEntity sourceCode equals: '"b"'. + self assert: (self topEntity isOfType: FASTCSSStringValue). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 1. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: 'b'. + self assert: (self topEntity isOfType: FASTCSSStringContent). + stack pop. + stack pop. + stack pop. + + stack push: (stack top childrenNodes at: 2). + self assert: self topEntity sourceCode equals: 'hover'. + self assert: (self topEntity isOfType: FASTCSSClassName). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 1. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: 'hover'. + self assert: (self topEntity isOfType: FASTCSSIdentifier). + stack pop. + stack pop. + stack pop. + stack pop. + stack pop. + stack pop. + + stack push: (stack top childrenNodes at: 2). + self assert: self topEntity sourceCode equals: '{}'. + self assert: (self topEntity isOfType: FASTCSSBlock). + stack pop. + stack pop. + + stack push: (stack top childrenNodes at: 10). + self assert: self topEntity sourceCode equals: ':host([a=''b'']:hover) {}'. + self assert: (self topEntity isOfType: FASTCSSRuleSet). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 2. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: ':host([a=''b'']:hover)'. + self assert: (self topEntity isOfType: FASTCSSSelectors). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 1. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: ':host([a=''b'']:hover)'. + self assert: (self topEntity isOfType: FASTCSSPseudoClassSelector). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 2. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: 'host'. + self assert: (self topEntity isOfType: FASTCSSClassName). + stack pop. + + stack push: (stack top childrenNodes at: 2). + self assert: self topEntity sourceCode equals: '([a=''b'']:hover)'. + self assert: (self topEntity isOfType: FASTCSSArguments). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 1. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: '[a=''b'']:hover'. + self assert: (self topEntity isOfType: FASTCSSPseudoClassSelector). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 2. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: '[a=''b'']'. + self assert: (self topEntity isOfType: FASTCSSAttributeSelector). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 2. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: 'a'. + self assert: (self topEntity isOfType: FASTCSSAttributeName). + stack pop. + + stack push: (stack top childrenNodes at: 2). + self assert: self topEntity sourceCode equals: '''b'''. + self assert: (self topEntity isOfType: FASTCSSStringValue). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 1. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: 'b'. + self assert: (self topEntity isOfType: FASTCSSStringContent). + stack pop. + stack pop. + stack pop. + + stack push: (stack top childrenNodes at: 2). + self assert: self topEntity sourceCode equals: 'hover'. + self assert: (self topEntity isOfType: FASTCSSClassName). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 1. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: 'hover'. + self assert: (self topEntity isOfType: FASTCSSIdentifier). + stack pop. + stack pop. + stack pop. + stack pop. + stack pop. + stack pop. + + stack push: (stack top childrenNodes at: 2). + self assert: self topEntity sourceCode equals: '{}'. + self assert: (self topEntity isOfType: FASTCSSBlock). + stack pop. + stack pop. + + stack push: (stack top childrenNodes at: 11). + self assert: self topEntity sourceCode equals: ':host {}'. + self assert: (self topEntity isOfType: FASTCSSRuleSet). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 2. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: ':host'. + self assert: (self topEntity isOfType: FASTCSSSelectors). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 1. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: ':host'. + self assert: (self topEntity isOfType: FASTCSSPseudoClassSelector). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 1. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: 'host'. + self assert: (self topEntity isOfType: FASTCSSClassName). + stack pop. + stack pop. + stack pop. + + stack push: (stack top childrenNodes at: 2). + self assert: self topEntity sourceCode equals: '{}'. + self assert: (self topEntity isOfType: FASTCSSBlock). + stack pop. + stack pop. + + stack push: (stack top childrenNodes at: 12). + self assert: self topEntity sourceCode equals: ':host { display: block; }'. + self assert: (self topEntity isOfType: FASTCSSRuleSet). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 2. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: ':host'. + self assert: (self topEntity isOfType: FASTCSSSelectors). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 1. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: ':host'. + self assert: (self topEntity isOfType: FASTCSSPseudoClassSelector). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 1. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: 'host'. + self assert: (self topEntity isOfType: FASTCSSClassName). + stack pop. + stack pop. + stack pop. + + stack push: (stack top childrenNodes at: 2). + self assert: self topEntity sourceCode equals: '{ display: block; }'. + self assert: (self topEntity isOfType: FASTCSSBlock). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 1. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: 'display: block;'. + self assert: (self topEntity isOfType: FASTCSSDeclaration). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 2. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: 'display'. + self assert: (self topEntity isOfType: FASTCSSPropertyName). + stack pop. + + stack push: (stack top childrenNodes at: 2). + self assert: self topEntity sourceCode equals: 'block'. + self assert: (self topEntity isOfType: FASTCSSPlainValue). + stack pop. + stack pop. + stack pop. + stack pop. + + stack push: (stack top childrenNodes at: 13). + self assert: self topEntity sourceCode equals: ':host(div.foo) {}'. + self assert: (self topEntity isOfType: FASTCSSRuleSet). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 2. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: ':host(div.foo)'. + self assert: (self topEntity isOfType: FASTCSSSelectors). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 1. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: ':host(div.foo)'. + self assert: (self topEntity isOfType: FASTCSSPseudoClassSelector). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 2. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: 'host'. + self assert: (self topEntity isOfType: FASTCSSClassName). + stack pop. + + stack push: (stack top childrenNodes at: 2). + self assert: self topEntity sourceCode equals: '(div.foo)'. + self assert: (self topEntity isOfType: FASTCSSArguments). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 1. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: 'div.foo'. + self assert: (self topEntity isOfType: FASTCSSClassSelector). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 2. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: 'div'. + self assert: (self topEntity isOfType: FASTCSSTagName). + stack pop. + + stack push: (stack top childrenNodes at: 2). + self assert: self topEntity sourceCode equals: 'foo'. + self assert: (self topEntity isOfType: FASTCSSClassName). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 1. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: 'foo'. + self assert: (self topEntity isOfType: FASTCSSIdentifier). + stack pop. + stack pop. + stack pop. + stack pop. + stack pop. + stack pop. + + stack push: (stack top childrenNodes at: 2). + self assert: self topEntity sourceCode equals: '{}'. + self assert: (self topEntity isOfType: FASTCSSBlock). + stack pop. + stack pop. + + stack push: (stack top childrenNodes at: 14). + self assert: self topEntity sourceCode equals: ':nth-child(2n of a.external) {}'. + self assert: (self topEntity isOfType: FASTCSSRuleSet). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 2. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: ':nth-child(2n of a.external)'. + self assert: (self topEntity isOfType: FASTCSSSelectors). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 1. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: ':nth-child(2n of a.external)'. + self assert: (self topEntity isOfType: FASTCSSPseudoClassSelector). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 2. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: 'nth-child'. + self assert: (self topEntity isOfType: FASTCSSClassName). + stack pop. + + stack push: (stack top childrenNodes at: 2). + self assert: self topEntity sourceCode equals: '(2n of a.external)'. + self assert: (self topEntity isOfType: FASTCSSArguments). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 2. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: '2n '. + self assert: (self topEntity isOfType: FASTCSSPlainValue). + stack pop. + + stack push: (stack top childrenNodes at: 2). + self assert: self topEntity sourceCode equals: 'a.external'. + self assert: (self topEntity isOfType: FASTCSSClassSelector). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 2. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: 'a'. + self assert: (self topEntity isOfType: FASTCSSTagName). + stack pop. + + stack push: (stack top childrenNodes at: 2). + self assert: self topEntity sourceCode equals: 'external'. + self assert: (self topEntity isOfType: FASTCSSClassName). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 1. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: 'external'. + self assert: (self topEntity isOfType: FASTCSSIdentifier). + stack pop. + stack pop. + stack pop. + stack pop. + stack pop. + stack pop. + + stack push: (stack top childrenNodes at: 2). + self assert: self topEntity sourceCode equals: '{}'. + self assert: (self topEntity isOfType: FASTCSSBlock). + stack pop. + stack pop. + + stack push: (stack top childrenNodes at: 15). + self assert: self topEntity sourceCode equals: ''. + self assert: (self topEntity isOfType: FASTCSSERROR). + self assert: (self topEntity isOfType: FamixTHasImmediateSource). + self assert: (self topEntity isOfType: FamixTSourceAnchor). + stack pop. + self assert: self topEntity source equals: 'a:hover {} +:nth-child(2) {} +p:has(li) {} +p:is(.foo) {} +p:has(li.foo) {} +*:where(li#foo) {} +p:has(.foo, .bar) {} +a:not([href]) {} +:host([a="b"]:hover) {} +:host([a=''b'']:hover) {} +:host {} +:host { display: block; } +:host(div.foo) {} +:nth-child(2n of a.external) {};' withPlatformLineEndings +] + +{ #category : 'tests' } +FASTCSSImporterTest >> testGeneratedPseudoelementSelectors [ + + "Generated as regression test by TSFASTImporterTestGenerator>>#generateTestNamed:fromCode:protocol: + Regenerate executing: self regenerateTest: #testGeneratedPseudoelementSelectors " + + self parse: 'a::first-line {};'. + + self assert: (fast allWithType: FASTCSSBlock) size equals: 1. + self assert: (fast allWithType: FASTCSSERROR) size equals: 1. + self assert: (fast allWithType: FASTCSSPseudoElementSelector) size equals: 1. + self assert: (fast allWithType: FASTCSSRuleSet) size equals: 1. + self assert: (fast allWithType: FASTCSSSelectors) size equals: 1. + self assert: (fast allWithType: FASTCSSStylesheet) size equals: 1. + self assert: (fast allWithType: FASTCSSTagName) size equals: 2. + + stack push: fast rootEntities anyOne. + self assert: self topEntity sourceCode equals: 'a::first-line {};'. + self assert: (self topEntity isOfType: FASTCSSStylesheet). + self assert: (self topEntity isOfType: FamixTHasImmediateSource). + self assert: (self topEntity isOfType: FamixTSourceAnchor). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 2. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: 'a::first-line {}'. + self assert: (self topEntity isOfType: FASTCSSRuleSet). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 2. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: 'a::first-line'. + self assert: (self topEntity isOfType: FASTCSSSelectors). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 1. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: 'a::first-line'. + self assert: (self topEntity isOfType: FASTCSSPseudoElementSelector). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 2. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: 'a'. + self assert: (self topEntity isOfType: FASTCSSTagName). + stack pop. + + stack push: (stack top childrenNodes at: 2). + self assert: self topEntity sourceCode equals: 'first-line'. + self assert: (self topEntity isOfType: FASTCSSTagName). + stack pop. + stack pop. + stack pop. + + stack push: (stack top childrenNodes at: 2). + self assert: self topEntity sourceCode equals: '{}'. + self assert: (self topEntity isOfType: FASTCSSBlock). + stack pop. + stack pop. + + stack push: (stack top childrenNodes at: 2). + self assert: self topEntity sourceCode equals: ''. + self assert: (self topEntity isOfType: FASTCSSERROR). + self assert: (self topEntity isOfType: FamixTHasImmediateSource). + self assert: (self topEntity isOfType: FamixTSourceAnchor). + stack pop. + self assert: self topEntity source equals: 'a::first-line {};' +] + +{ #category : 'tests' } +FASTCSSImporterTest >> testGeneratedRuleSets [ + + "Generated as regression test by TSFASTImporterTestGenerator>>#generateTestNamed:fromCode:protocol: + Regenerate executing: self regenerateTest: #testGeneratedRuleSets " + + self parse: '#some-id { + some-property: 5px; +};'. + + self assert: (fast allWithType: FASTCSSBlock) size equals: 1. + self assert: (fast allWithType: FASTCSSDeclaration) size equals: 1. + self assert: (fast allWithType: FASTCSSERROR) size equals: 1. + self assert: (fast allWithType: FASTCSSIdName) size equals: 1. + self assert: (fast allWithType: FASTCSSIdSelector) size equals: 1. + self assert: (fast allWithType: FASTCSSIntegerValue) size equals: 1. + self assert: (fast allWithType: FASTCSSPropertyName) size equals: 1. + self assert: (fast allWithType: FASTCSSRuleSet) size equals: 1. + self assert: (fast allWithType: FASTCSSSelectors) size equals: 1. + self assert: (fast allWithType: FASTCSSStylesheet) size equals: 1. + self assert: (fast allWithType: FASTCSSUnit) size equals: 1. + + stack push: fast rootEntities anyOne. + self assert: self topEntity sourceCode equals: '#some-id { + some-property: 5px; +};' withPlatformLineEndings. + self assert: (self topEntity isOfType: FASTCSSStylesheet). + self assert: (self topEntity isOfType: FamixTHasImmediateSource). + self assert: (self topEntity isOfType: FamixTSourceAnchor). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 2. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: '#some-id { + some-property: 5px; +}' withPlatformLineEndings. + self assert: (self topEntity isOfType: FASTCSSRuleSet). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 2. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: '#some-id'. + self assert: (self topEntity isOfType: FASTCSSSelectors). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 1. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: '#some-id'. + self assert: (self topEntity isOfType: FASTCSSIdSelector). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 1. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: 'some-id'. + self assert: (self topEntity isOfType: FASTCSSIdName). + stack pop. + stack pop. + stack pop. + + stack push: (stack top childrenNodes at: 2). + self assert: self topEntity sourceCode equals: '{ + some-property: 5px; +}' withPlatformLineEndings. + self assert: (self topEntity isOfType: FASTCSSBlock). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 1. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: 'some-property: 5px;'. + self assert: (self topEntity isOfType: FASTCSSDeclaration). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 2. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: 'some-property'. + self assert: (self topEntity isOfType: FASTCSSPropertyName). + stack pop. + + stack push: (stack top childrenNodes at: 2). + self assert: self topEntity sourceCode equals: '5px'. + self assert: (self topEntity isOfType: FASTCSSIntegerValue). + + "Testing value of monovalue relation childrenNode" + self assert: self topEntity childrenNode isNotNil. + + stack push: self topEntity childrenNode. + self assert: self topEntity sourceCode equals: 'px'. + self assert: (self topEntity isOfType: FASTCSSUnit). + stack pop. + stack pop. + stack pop. + stack pop. + stack pop. + + stack push: (stack top childrenNodes at: 2). + self assert: self topEntity sourceCode equals: ''. + self assert: (self topEntity isOfType: FASTCSSERROR). + self assert: (self topEntity isOfType: FamixTHasImmediateSource). + self assert: (self topEntity isOfType: FamixTSourceAnchor). + stack pop. + self assert: self topEntity source equals: '#some-id { + some-property: 5px; +};' withPlatformLineEndings +] + +{ #category : 'tests' } +FASTCSSImporterTest >> testGeneratedScopeStatements [ + + "Generated as regression test by TSFASTImporterTestGenerator>>#generateTestNamed:fromCode:protocol: + Regenerate executing: self regenerateTest: #testGeneratedScopeStatements " + + self parse: '@scope (.card) { + h1 { + color: blue; + } +} + +@scope (.article-body) to (figure) { + img { + border: 5px solid black; + } +};'. + + self assert: (fast allWithType: FASTCSSBlock) size equals: 4. + self assert: (fast allWithType: FASTCSSClassName) size equals: 2. + self assert: (fast allWithType: FASTCSSClassSelector) size equals: 2. + self assert: (fast allWithType: FASTCSSDeclaration) size equals: 2. + self assert: (fast allWithType: FASTCSSERROR) size equals: 1. + self assert: (fast allWithType: FASTCSSIdentifier) size equals: 2. + self assert: (fast allWithType: FASTCSSIntegerValue) size equals: 1. + self assert: (fast allWithType: FASTCSSPlainValue) size equals: 3. + self assert: (fast allWithType: FASTCSSPropertyName) size equals: 2. + self assert: (fast allWithType: FASTCSSRuleSet) size equals: 2. + self assert: (fast allWithType: FASTCSSScopeStatement) size equals: 2. + self assert: (fast allWithType: FASTCSSSelectors) size equals: 2. + self assert: (fast allWithType: FASTCSSStylesheet) size equals: 1. + self assert: (fast allWithType: FASTCSSTagName) size equals: 3. + self assert: (fast allWithType: FASTCSSUnit) size equals: 1. + + stack push: fast rootEntities anyOne. + self assert: self topEntity sourceCode equals: '@scope (.card) { + h1 { + color: blue; + } +} + +@scope (.article-body) to (figure) { + img { + border: 5px solid black; + } +};' withPlatformLineEndings. + self assert: (self topEntity isOfType: FASTCSSStylesheet). + self assert: (self topEntity isOfType: FamixTHasImmediateSource). + self assert: (self topEntity isOfType: FamixTSourceAnchor). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 3. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: '@scope (.card) { + h1 { + color: blue; + } +}' withPlatformLineEndings. + self assert: (self topEntity isOfType: FASTCSSScopeStatement). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 2. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: '.card'. + self assert: (self topEntity isOfType: FASTCSSClassSelector). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 1. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: 'card'. + self assert: (self topEntity isOfType: FASTCSSClassName). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 1. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: 'card'. + self assert: (self topEntity isOfType: FASTCSSIdentifier). + stack pop. + stack pop. + stack pop. + + stack push: (stack top childrenNodes at: 2). + self assert: self topEntity sourceCode equals: '{ + h1 { + color: blue; + } +}' withPlatformLineEndings. + self assert: (self topEntity isOfType: FASTCSSBlock). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 1. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: 'h1 { + color: blue; + }' withPlatformLineEndings. + self assert: (self topEntity isOfType: FASTCSSRuleSet). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 2. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: 'h1'. + self assert: (self topEntity isOfType: FASTCSSSelectors). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 1. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: 'h1'. + self assert: (self topEntity isOfType: FASTCSSTagName). + stack pop. + stack pop. + + stack push: (stack top childrenNodes at: 2). + self assert: self topEntity sourceCode equals: '{ + color: blue; + }' withPlatformLineEndings. + self assert: (self topEntity isOfType: FASTCSSBlock). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 1. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: 'color: blue;'. + self assert: (self topEntity isOfType: FASTCSSDeclaration). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 2. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: 'color'. + self assert: (self topEntity isOfType: FASTCSSPropertyName). + stack pop. + + stack push: (stack top childrenNodes at: 2). + self assert: self topEntity sourceCode equals: 'blue'. + self assert: (self topEntity isOfType: FASTCSSPlainValue). + stack pop. + stack pop. + stack pop. + stack pop. + stack pop. + stack pop. + + stack push: (stack top childrenNodes at: 2). + self assert: self topEntity sourceCode equals: '@scope (.article-body) to (figure) { + img { + border: 5px solid black; + } +}' withPlatformLineEndings. + self assert: (self topEntity isOfType: FASTCSSScopeStatement). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 3. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: '.article-body'. + self assert: (self topEntity isOfType: FASTCSSClassSelector). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 1. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: 'article-body'. + self assert: (self topEntity isOfType: FASTCSSClassName). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 1. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: 'article-body'. + self assert: (self topEntity isOfType: FASTCSSIdentifier). + stack pop. + stack pop. + stack pop. + + stack push: (stack top childrenNodes at: 2). + self assert: self topEntity sourceCode equals: 'figure'. + self assert: (self topEntity isOfType: FASTCSSTagName). + stack pop. + + stack push: (stack top childrenNodes at: 3). + self assert: self topEntity sourceCode equals: '{ + img { + border: 5px solid black; + } +}' withPlatformLineEndings. + self assert: (self topEntity isOfType: FASTCSSBlock). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 1. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: 'img { + border: 5px solid black; + }' withPlatformLineEndings. + self assert: (self topEntity isOfType: FASTCSSRuleSet). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 2. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: 'img'. + self assert: (self topEntity isOfType: FASTCSSSelectors). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 1. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: 'img'. + self assert: (self topEntity isOfType: FASTCSSTagName). + stack pop. + stack pop. + + stack push: (stack top childrenNodes at: 2). + self assert: self topEntity sourceCode equals: '{ + border: 5px solid black; + }' withPlatformLineEndings. + self assert: (self topEntity isOfType: FASTCSSBlock). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 1. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: 'border: 5px solid black;'. + self assert: (self topEntity isOfType: FASTCSSDeclaration). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 4. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: 'border'. + self assert: (self topEntity isOfType: FASTCSSPropertyName). + stack pop. + + stack push: (stack top childrenNodes at: 2). + self assert: self topEntity sourceCode equals: '5px'. + self assert: (self topEntity isOfType: FASTCSSIntegerValue). + + "Testing value of monovalue relation childrenNode" + self assert: self topEntity childrenNode isNotNil. + + stack push: self topEntity childrenNode. + self assert: self topEntity sourceCode equals: 'px'. + self assert: (self topEntity isOfType: FASTCSSUnit). + stack pop. + stack pop. + + stack push: (stack top childrenNodes at: 3). + self assert: self topEntity sourceCode equals: 'solid'. + self assert: (self topEntity isOfType: FASTCSSPlainValue). + stack pop. + + stack push: (stack top childrenNodes at: 4). + self assert: self topEntity sourceCode equals: 'black'. + self assert: (self topEntity isOfType: FASTCSSPlainValue). + stack pop. + stack pop. + stack pop. + stack pop. + stack pop. + stack pop. + + stack push: (stack top childrenNodes at: 3). + self assert: self topEntity sourceCode equals: ''. + self assert: (self topEntity isOfType: FASTCSSERROR). + self assert: (self topEntity isOfType: FamixTHasImmediateSource). + self assert: (self topEntity isOfType: FamixTSourceAnchor). + stack pop. + self assert: self topEntity source equals: '@scope (.card) { + h1 { + color: blue; + } +} + +@scope (.article-body) to (figure) { + img { + border: 5px solid black; + } +};' withPlatformLineEndings +] + +{ #category : 'tests' } +FASTCSSImporterTest >> testGeneratedSiblingSelectors [ + + "Generated as regression test by TSFASTImporterTestGenerator>>#generateTestNamed:fromCode:protocol: + Regenerate executing: self regenerateTest: #testGeneratedSiblingSelectors " + + self parse: 'a.b ~ c.d {} +.e.f + .g.h {};'. + + self assert: (fast allWithType: FASTCSSAdjacentSiblingSelector) size equals: 1. + self assert: (fast allWithType: FASTCSSBlock) size equals: 2. + self assert: (fast allWithType: FASTCSSClassName) size equals: 6. + self assert: (fast allWithType: FASTCSSClassSelector) size equals: 6. + self assert: (fast allWithType: FASTCSSERROR) size equals: 1. + self assert: (fast allWithType: FASTCSSIdentifier) size equals: 6. + self assert: (fast allWithType: FASTCSSRuleSet) size equals: 2. + self assert: (fast allWithType: FASTCSSSelectors) size equals: 2. + self assert: (fast allWithType: FASTCSSSiblingSelector) size equals: 1. + self assert: (fast allWithType: FASTCSSStylesheet) size equals: 1. + self assert: (fast allWithType: FASTCSSTagName) size equals: 2. + + stack push: fast rootEntities anyOne. + self assert: self topEntity sourceCode equals: 'a.b ~ c.d {} +.e.f + .g.h {};' withPlatformLineEndings. + self assert: (self topEntity isOfType: FASTCSSStylesheet). + self assert: (self topEntity isOfType: FamixTHasImmediateSource). + self assert: (self topEntity isOfType: FamixTSourceAnchor). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 3. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: 'a.b ~ c.d {}'. + self assert: (self topEntity isOfType: FASTCSSRuleSet). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 2. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: 'a.b ~ c.d'. + self assert: (self topEntity isOfType: FASTCSSSelectors). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 1. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: 'a.b ~ c.d'. + self assert: (self topEntity isOfType: FASTCSSSiblingSelector). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 2. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: 'a.b'. + self assert: (self topEntity isOfType: FASTCSSClassSelector). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 2. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: 'a'. + self assert: (self topEntity isOfType: FASTCSSTagName). + stack pop. + + stack push: (stack top childrenNodes at: 2). + self assert: self topEntity sourceCode equals: 'b'. + self assert: (self topEntity isOfType: FASTCSSClassName). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 1. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: 'b'. + self assert: (self topEntity isOfType: FASTCSSIdentifier). + stack pop. + stack pop. + stack pop. + + stack push: (stack top childrenNodes at: 2). + self assert: self topEntity sourceCode equals: 'c.d'. + self assert: (self topEntity isOfType: FASTCSSClassSelector). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 2. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: 'c'. + self assert: (self topEntity isOfType: FASTCSSTagName). + stack pop. + + stack push: (stack top childrenNodes at: 2). + self assert: self topEntity sourceCode equals: 'd'. + self assert: (self topEntity isOfType: FASTCSSClassName). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 1. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: 'd'. + self assert: (self topEntity isOfType: FASTCSSIdentifier). + stack pop. + stack pop. + stack pop. + stack pop. + stack pop. + + stack push: (stack top childrenNodes at: 2). + self assert: self topEntity sourceCode equals: '{}'. + self assert: (self topEntity isOfType: FASTCSSBlock). + stack pop. + stack pop. + + stack push: (stack top childrenNodes at: 2). + self assert: self topEntity sourceCode equals: '.e.f + .g.h {}'. + self assert: (self topEntity isOfType: FASTCSSRuleSet). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 2. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: '.e.f + .g.h'. + self assert: (self topEntity isOfType: FASTCSSSelectors). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 1. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: '.e.f + .g.h'. + self assert: (self topEntity isOfType: FASTCSSAdjacentSiblingSelector). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 2. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: '.e.f'. + self assert: (self topEntity isOfType: FASTCSSClassSelector). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 2. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: '.e'. + self assert: (self topEntity isOfType: FASTCSSClassSelector). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 1. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: 'e'. + self assert: (self topEntity isOfType: FASTCSSClassName). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 1. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: 'e'. + self assert: (self topEntity isOfType: FASTCSSIdentifier). + stack pop. + stack pop. + stack pop. + + stack push: (stack top childrenNodes at: 2). + self assert: self topEntity sourceCode equals: 'f'. + self assert: (self topEntity isOfType: FASTCSSClassName). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 1. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: 'f'. + self assert: (self topEntity isOfType: FASTCSSIdentifier). + stack pop. + stack pop. + stack pop. + + stack push: (stack top childrenNodes at: 2). + self assert: self topEntity sourceCode equals: '.g.h'. + self assert: (self topEntity isOfType: FASTCSSClassSelector). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 2. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: '.g'. + self assert: (self topEntity isOfType: FASTCSSClassSelector). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 1. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: 'g'. + self assert: (self topEntity isOfType: FASTCSSClassName). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 1. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: 'g'. + self assert: (self topEntity isOfType: FASTCSSIdentifier). + stack pop. + stack pop. + stack pop. + + stack push: (stack top childrenNodes at: 2). + self assert: self topEntity sourceCode equals: 'h'. + self assert: (self topEntity isOfType: FASTCSSClassName). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 1. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: 'h'. + self assert: (self topEntity isOfType: FASTCSSIdentifier). + stack pop. + stack pop. + stack pop. + stack pop. + stack pop. + + stack push: (stack top childrenNodes at: 2). + self assert: self topEntity sourceCode equals: '{}'. + self assert: (self topEntity isOfType: FASTCSSBlock). + stack pop. + stack pop. + + stack push: (stack top childrenNodes at: 3). + self assert: self topEntity sourceCode equals: ''. + self assert: (self topEntity isOfType: FASTCSSERROR). + self assert: (self topEntity isOfType: FamixTHasImmediateSource). + self assert: (self topEntity isOfType: FamixTSourceAnchor). + stack pop. + self assert: self topEntity source equals: 'a.b ~ c.d {} +.e.f + .g.h {};' withPlatformLineEndings +] + +{ #category : 'tests' } +FASTCSSImporterTest >> testGeneratedSlottedPseudoElement [ + + "Generated as regression test by TSFASTImporterTestGenerator>>#generateTestNamed:fromCode:protocol: + Regenerate executing: self regenerateTest: #testGeneratedSlottedPseudoElement " + + self parse: '::slotted(button) {};'. + + self assert: (fast allWithType: FASTCSSArguments) size equals: 1. + self assert: (fast allWithType: FASTCSSBlock) size equals: 1. + self assert: (fast allWithType: FASTCSSERROR) size equals: 1. + self assert: (fast allWithType: FASTCSSPseudoElementSelector) size equals: 1. + self assert: (fast allWithType: FASTCSSRuleSet) size equals: 1. + self assert: (fast allWithType: FASTCSSSelectors) size equals: 1. + self assert: (fast allWithType: FASTCSSStylesheet) size equals: 1. + self assert: (fast allWithType: FASTCSSTagName) size equals: 2. + + stack push: fast rootEntities anyOne. + self assert: self topEntity sourceCode equals: '::slotted(button) {};'. + self assert: (self topEntity isOfType: FASTCSSStylesheet). + self assert: (self topEntity isOfType: FamixTHasImmediateSource). + self assert: (self topEntity isOfType: FamixTSourceAnchor). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 2. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: '::slotted(button) {}'. + self assert: (self topEntity isOfType: FASTCSSRuleSet). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 2. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: '::slotted(button)'. + self assert: (self topEntity isOfType: FASTCSSSelectors). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 1. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: '::slotted(button)'. + self assert: (self topEntity isOfType: FASTCSSPseudoElementSelector). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 2. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: 'slotted'. + self assert: (self topEntity isOfType: FASTCSSTagName). + stack pop. + + stack push: (stack top childrenNodes at: 2). + self assert: self topEntity sourceCode equals: '(button)'. + self assert: (self topEntity isOfType: FASTCSSArguments). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 1. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: 'button'. + self assert: (self topEntity isOfType: FASTCSSTagName). + stack pop. + stack pop. + stack pop. + stack pop. + + stack push: (stack top childrenNodes at: 2). + self assert: self topEntity sourceCode equals: '{}'. + self assert: (self topEntity isOfType: FASTCSSBlock). + stack pop. + stack pop. + + stack push: (stack top childrenNodes at: 2). + self assert: self topEntity sourceCode equals: ''. + self assert: (self topEntity isOfType: FASTCSSERROR). + self assert: (self topEntity isOfType: FamixTHasImmediateSource). + self assert: (self topEntity isOfType: FamixTSourceAnchor). + stack pop. + self assert: self topEntity source equals: '::slotted(button) {};' +] + +{ #category : 'tests' } +FASTCSSImporterTest >> testGeneratedSpacesAfterColonsInPropertyDeclarations [ + + "Generated as regression test by TSFASTImporterTestGenerator>>#generateTestNamed:fromCode:protocol: + Regenerate executing: self regenerateTest: #testGeneratedSpacesAfterColonsInPropertyDeclarations " + + self parse: 'div { + margin : 0; + padding : 0; +};'. + + self assert: (fast allWithType: FASTCSSBlock) size equals: 1. + self assert: (fast allWithType: FASTCSSDeclaration) size equals: 2. + self assert: (fast allWithType: FASTCSSERROR) size equals: 1. + self assert: (fast allWithType: FASTCSSIntegerValue) size equals: 2. + self assert: (fast allWithType: FASTCSSPropertyName) size equals: 2. + self assert: (fast allWithType: FASTCSSRuleSet) size equals: 1. + self assert: (fast allWithType: FASTCSSSelectors) size equals: 1. + self assert: (fast allWithType: FASTCSSStylesheet) size equals: 1. + self assert: (fast allWithType: FASTCSSTagName) size equals: 1. + + stack push: fast rootEntities anyOne. + self assert: self topEntity sourceCode equals: 'div { + margin : 0; + padding : 0; +};' withPlatformLineEndings. + self assert: (self topEntity isOfType: FASTCSSStylesheet). + self assert: (self topEntity isOfType: FamixTHasImmediateSource). + self assert: (self topEntity isOfType: FamixTSourceAnchor). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 2. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: 'div { + margin : 0; + padding : 0; +}' withPlatformLineEndings. + self assert: (self topEntity isOfType: FASTCSSRuleSet). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 2. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: 'div'. + self assert: (self topEntity isOfType: FASTCSSSelectors). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 1. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: 'div'. + self assert: (self topEntity isOfType: FASTCSSTagName). + stack pop. + stack pop. + + stack push: (stack top childrenNodes at: 2). + self assert: self topEntity sourceCode equals: '{ + margin : 0; + padding : 0; +}' withPlatformLineEndings. + self assert: (self topEntity isOfType: FASTCSSBlock). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 2. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: 'margin : 0;'. + self assert: (self topEntity isOfType: FASTCSSDeclaration). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 2. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: 'margin'. + self assert: (self topEntity isOfType: FASTCSSPropertyName). + stack pop. + + stack push: (stack top childrenNodes at: 2). + self assert: self topEntity sourceCode equals: '0'. + self assert: (self topEntity isOfType: FASTCSSIntegerValue). + stack pop. + stack pop. + + stack push: (stack top childrenNodes at: 2). + self assert: self topEntity sourceCode equals: 'padding : 0;'. + self assert: (self topEntity isOfType: FASTCSSDeclaration). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 2. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: 'padding'. + self assert: (self topEntity isOfType: FASTCSSPropertyName). + stack pop. + + stack push: (stack top childrenNodes at: 2). + self assert: self topEntity sourceCode equals: '0'. + self assert: (self topEntity isOfType: FASTCSSIntegerValue). + stack pop. + stack pop. + stack pop. + stack pop. + + stack push: (stack top childrenNodes at: 2). + self assert: self topEntity sourceCode equals: ''. + self assert: (self topEntity isOfType: FASTCSSERROR). + self assert: (self topEntity isOfType: FamixTHasImmediateSource). + self assert: (self topEntity isOfType: FamixTSourceAnchor). + stack pop. + self assert: self topEntity source equals: 'div { + margin : 0; + padding : 0; +};' withPlatformLineEndings +] + +{ #category : 'tests' } +FASTCSSImporterTest >> testGeneratedStrings [ + + "Generated as regression test by TSFASTImporterTestGenerator>>#generateTestNamed:fromCode:protocol: + Regenerate executing: self regenerateTest: #testGeneratedStrings " + + self parse: 'a { + b: ''''; + c: ''\''hi\''''; +};'. + + self assert: (fast allWithType: FASTCSSBlock) size equals: 1. + self assert: (fast allWithType: FASTCSSDeclaration) size equals: 2. + self assert: (fast allWithType: FASTCSSERROR) size equals: 1. + self assert: (fast allWithType: FASTCSSEscapeSequence) size equals: 2. + self assert: (fast allWithType: FASTCSSPropertyName) size equals: 2. + self assert: (fast allWithType: FASTCSSRuleSet) size equals: 1. + self assert: (fast allWithType: FASTCSSSelectors) size equals: 1. + self assert: (fast allWithType: FASTCSSStringContent) size equals: 1. + self assert: (fast allWithType: FASTCSSStringValue) size equals: 2. + self assert: (fast allWithType: FASTCSSStylesheet) size equals: 1. + self assert: (fast allWithType: FASTCSSTagName) size equals: 1. + + stack push: fast rootEntities anyOne. + self assert: self topEntity sourceCode equals: 'a { + b: ''''; + c: ''\''hi\''''; +};' withPlatformLineEndings. + self assert: (self topEntity isOfType: FASTCSSStylesheet). + self assert: (self topEntity isOfType: FamixTHasImmediateSource). + self assert: (self topEntity isOfType: FamixTSourceAnchor). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 2. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: 'a { + b: ''''; + c: ''\''hi\''''; +}' withPlatformLineEndings. + self assert: (self topEntity isOfType: FASTCSSRuleSet). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 2. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: 'a'. + self assert: (self topEntity isOfType: FASTCSSSelectors). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 1. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: 'a'. + self assert: (self topEntity isOfType: FASTCSSTagName). + stack pop. + stack pop. + + stack push: (stack top childrenNodes at: 2). + self assert: self topEntity sourceCode equals: '{ + b: ''''; + c: ''\''hi\''''; +}' withPlatformLineEndings. + self assert: (self topEntity isOfType: FASTCSSBlock). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 2. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: 'b: '''';'. + self assert: (self topEntity isOfType: FASTCSSDeclaration). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 2. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: 'b'. + self assert: (self topEntity isOfType: FASTCSSPropertyName). + stack pop. + + stack push: (stack top childrenNodes at: 2). + self assert: self topEntity sourceCode equals: ''''''. + self assert: (self topEntity isOfType: FASTCSSStringValue). + stack pop. + stack pop. + + stack push: (stack top childrenNodes at: 2). + self assert: self topEntity sourceCode equals: 'c: ''\''hi\'''';'. + self assert: (self topEntity isOfType: FASTCSSDeclaration). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 2. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: 'c'. + self assert: (self topEntity isOfType: FASTCSSPropertyName). + stack pop. + + stack push: (stack top childrenNodes at: 2). + self assert: self topEntity sourceCode equals: '''\''hi\'''''. + self assert: (self topEntity isOfType: FASTCSSStringValue). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 3. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: '\'''. + self assert: (self topEntity isOfType: FASTCSSEscapeSequence). + stack pop. + + stack push: (stack top childrenNodes at: 2). + self assert: self topEntity sourceCode equals: 'hi'. + self assert: (self topEntity isOfType: FASTCSSStringContent). + stack pop. + + stack push: (stack top childrenNodes at: 3). + self assert: self topEntity sourceCode equals: '\'''. + self assert: (self topEntity isOfType: FASTCSSEscapeSequence). + stack pop. + stack pop. + stack pop. + stack pop. + stack pop. + + stack push: (stack top childrenNodes at: 2). + self assert: self topEntity sourceCode equals: ''. + self assert: (self topEntity isOfType: FASTCSSERROR). + self assert: (self topEntity isOfType: FamixTHasImmediateSource). + self assert: (self topEntity isOfType: FamixTSourceAnchor). + stack pop. + self assert: self topEntity source equals: 'a { + b: ''''; + c: ''\''hi\''''; +};' withPlatformLineEndings +] + +{ #category : 'tests' } +FASTCSSImporterTest >> testGeneratedSupportsStatements [ + + "Generated as regression test by TSFASTImporterTestGenerator>>#generateTestNamed:fromCode:protocol: + Regenerate executing: self regenerateTest: #testGeneratedSupportsStatements " + + self parse: '@supports (animation-name: test) { + div { animation-name: test; } +} +@supports (transform-style: preserve) or (-moz-transform-style: preserve) {} +@supports not ((text-align-last: justify) or (-moz-text-align-last: justify)) {} +@supports not selector(:matches(a, b)) {};'. + + self assert: (fast allWithType: FASTCSSArguments) size equals: 1. + self assert: (fast allWithType: FASTCSSBinaryQuery) size equals: 2. + self assert: (fast allWithType: FASTCSSBlock) size equals: 5. + self assert: (fast allWithType: FASTCSSClassName) size equals: 1. + self assert: (fast allWithType: FASTCSSDeclaration) size equals: 1. + self assert: (fast allWithType: FASTCSSERROR) size equals: 1. + self assert: (fast allWithType: FASTCSSFeatureName) size equals: 5. + self assert: (fast allWithType: FASTCSSFeatureQuery) size equals: 5. + self assert: (fast allWithType: FASTCSSIdentifier) size equals: 1. + self assert: (fast allWithType: FASTCSSParenthesizedQuery) size equals: 1. + self assert: (fast allWithType: FASTCSSPlainValue) size equals: 6. + self assert: (fast allWithType: FASTCSSPropertyName) size equals: 1. + self assert: (fast allWithType: FASTCSSPseudoClassSelector) size equals: 1. + self assert: (fast allWithType: FASTCSSRuleSet) size equals: 1. + self assert: (fast allWithType: FASTCSSSelectorQuery) size equals: 1. + self assert: (fast allWithType: FASTCSSSelectors) size equals: 1. + self assert: (fast allWithType: FASTCSSStylesheet) size equals: 1. + self assert: (fast allWithType: FASTCSSSupportsStatement) size equals: 4. + self assert: (fast allWithType: FASTCSSTagName) size equals: 3. + self assert: (fast allWithType: FASTCSSUnaryQuery) size equals: 2. + + stack push: fast rootEntities anyOne. + self assert: self topEntity sourceCode equals: '@supports (animation-name: test) { + div { animation-name: test; } +} +@supports (transform-style: preserve) or (-moz-transform-style: preserve) {} +@supports not ((text-align-last: justify) or (-moz-text-align-last: justify)) {} +@supports not selector(:matches(a, b)) {};' withPlatformLineEndings. + self assert: (self topEntity isOfType: FASTCSSStylesheet). + self assert: (self topEntity isOfType: FamixTHasImmediateSource). + self assert: (self topEntity isOfType: FamixTSourceAnchor). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 5. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: '@supports (animation-name: test) { + div { animation-name: test; } +}' withPlatformLineEndings. + self assert: (self topEntity isOfType: FASTCSSSupportsStatement). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 2. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: '(animation-name: test)'. + self assert: (self topEntity isOfType: FASTCSSFeatureQuery). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 2. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: 'animation-name'. + self assert: (self topEntity isOfType: FASTCSSFeatureName). + stack pop. + + stack push: (stack top childrenNodes at: 2). + self assert: self topEntity sourceCode equals: 'test'. + self assert: (self topEntity isOfType: FASTCSSPlainValue). + stack pop. + stack pop. + + stack push: (stack top childrenNodes at: 2). + self assert: self topEntity sourceCode equals: '{ + div { animation-name: test; } +}' withPlatformLineEndings. + self assert: (self topEntity isOfType: FASTCSSBlock). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 1. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: 'div { animation-name: test; }'. + self assert: (self topEntity isOfType: FASTCSSRuleSet). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 2. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: 'div'. + self assert: (self topEntity isOfType: FASTCSSSelectors). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 1. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: 'div'. + self assert: (self topEntity isOfType: FASTCSSTagName). + stack pop. + stack pop. + + stack push: (stack top childrenNodes at: 2). + self assert: self topEntity sourceCode equals: '{ animation-name: test; }'. + self assert: (self topEntity isOfType: FASTCSSBlock). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 1. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: 'animation-name: test;'. + self assert: (self topEntity isOfType: FASTCSSDeclaration). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 2. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: 'animation-name'. + self assert: (self topEntity isOfType: FASTCSSPropertyName). + stack pop. + + stack push: (stack top childrenNodes at: 2). + self assert: self topEntity sourceCode equals: 'test'. + self assert: (self topEntity isOfType: FASTCSSPlainValue). + stack pop. + stack pop. + stack pop. + stack pop. + stack pop. + stack pop. + + stack push: (stack top childrenNodes at: 2). + self assert: self topEntity sourceCode equals: '@supports (transform-style: preserve) or (-moz-transform-style: preserve) {}'. + self assert: (self topEntity isOfType: FASTCSSSupportsStatement). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 2. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: '(transform-style: preserve) or (-moz-transform-style: preserve)'. + self assert: (self topEntity isOfType: FASTCSSBinaryQuery). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 2. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: '(transform-style: preserve)'. + self assert: (self topEntity isOfType: FASTCSSFeatureQuery). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 2. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: 'transform-style'. + self assert: (self topEntity isOfType: FASTCSSFeatureName). + stack pop. + + stack push: (stack top childrenNodes at: 2). + self assert: self topEntity sourceCode equals: 'preserve'. + self assert: (self topEntity isOfType: FASTCSSPlainValue). + stack pop. + stack pop. + + stack push: (stack top childrenNodes at: 2). + self assert: self topEntity sourceCode equals: '(-moz-transform-style: preserve)'. + self assert: (self topEntity isOfType: FASTCSSFeatureQuery). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 2. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: '-moz-transform-style'. + self assert: (self topEntity isOfType: FASTCSSFeatureName). + stack pop. + + stack push: (stack top childrenNodes at: 2). + self assert: self topEntity sourceCode equals: 'preserve'. + self assert: (self topEntity isOfType: FASTCSSPlainValue). + stack pop. + stack pop. + stack pop. + + stack push: (stack top childrenNodes at: 2). + self assert: self topEntity sourceCode equals: '{}'. + self assert: (self topEntity isOfType: FASTCSSBlock). + stack pop. + stack pop. + + stack push: (stack top childrenNodes at: 3). + self assert: self topEntity sourceCode equals: '@supports not ((text-align-last: justify) or (-moz-text-align-last: justify)) {}'. + self assert: (self topEntity isOfType: FASTCSSSupportsStatement). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 2. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: 'not ((text-align-last: justify) or (-moz-text-align-last: justify))'. + self assert: (self topEntity isOfType: FASTCSSUnaryQuery). + + "Testing value of monovalue relation childrenNode" + self assert: self topEntity childrenNode isNotNil. + + stack push: self topEntity childrenNode. + self assert: self topEntity sourceCode equals: '((text-align-last: justify) or (-moz-text-align-last: justify))'. + self assert: (self topEntity isOfType: FASTCSSParenthesizedQuery). + + "Testing value of monovalue relation childrenNode" + self assert: self topEntity childrenNode isNotNil. + + stack push: self topEntity childrenNode. + self assert: self topEntity sourceCode equals: '(text-align-last: justify) or (-moz-text-align-last: justify)'. + self assert: (self topEntity isOfType: FASTCSSBinaryQuery). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 2. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: '(text-align-last: justify)'. + self assert: (self topEntity isOfType: FASTCSSFeatureQuery). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 2. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: 'text-align-last'. + self assert: (self topEntity isOfType: FASTCSSFeatureName). + stack pop. + + stack push: (stack top childrenNodes at: 2). + self assert: self topEntity sourceCode equals: 'justify'. + self assert: (self topEntity isOfType: FASTCSSPlainValue). + stack pop. + stack pop. + + stack push: (stack top childrenNodes at: 2). + self assert: self topEntity sourceCode equals: '(-moz-text-align-last: justify)'. + self assert: (self topEntity isOfType: FASTCSSFeatureQuery). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 2. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: '-moz-text-align-last'. + self assert: (self topEntity isOfType: FASTCSSFeatureName). + stack pop. + + stack push: (stack top childrenNodes at: 2). + self assert: self topEntity sourceCode equals: 'justify'. + self assert: (self topEntity isOfType: FASTCSSPlainValue). + stack pop. + stack pop. + stack pop. + stack pop. + stack pop. + + stack push: (stack top childrenNodes at: 2). + self assert: self topEntity sourceCode equals: '{}'. + self assert: (self topEntity isOfType: FASTCSSBlock). + stack pop. + stack pop. + + stack push: (stack top childrenNodes at: 4). + self assert: self topEntity sourceCode equals: '@supports not selector(:matches(a, b)) {}'. + self assert: (self topEntity isOfType: FASTCSSSupportsStatement). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 2. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: 'not selector(:matches(a, b))'. + self assert: (self topEntity isOfType: FASTCSSUnaryQuery). + + "Testing value of monovalue relation childrenNode" + self assert: self topEntity childrenNode isNotNil. + + stack push: self topEntity childrenNode. + self assert: self topEntity sourceCode equals: 'selector(:matches(a, b))'. + self assert: (self topEntity isOfType: FASTCSSSelectorQuery). + + "Testing value of monovalue relation childrenNode" + self assert: self topEntity childrenNode isNotNil. + + stack push: self topEntity childrenNode. + self assert: self topEntity sourceCode equals: ':matches(a, b)'. + self assert: (self topEntity isOfType: FASTCSSPseudoClassSelector). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 2. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: 'matches'. + self assert: (self topEntity isOfType: FASTCSSClassName). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 1. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: 'matches'. + self assert: (self topEntity isOfType: FASTCSSIdentifier). + stack pop. + stack pop. + + stack push: (stack top childrenNodes at: 2). + self assert: self topEntity sourceCode equals: '(a, b)'. + self assert: (self topEntity isOfType: FASTCSSArguments). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 2. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: 'a'. + self assert: (self topEntity isOfType: FASTCSSTagName). + stack pop. + + stack push: (stack top childrenNodes at: 2). + self assert: self topEntity sourceCode equals: 'b'. + self assert: (self topEntity isOfType: FASTCSSTagName). + stack pop. + stack pop. + stack pop. + stack pop. + stack pop. + + stack push: (stack top childrenNodes at: 2). + self assert: self topEntity sourceCode equals: '{}'. + self assert: (self topEntity isOfType: FASTCSSBlock). + stack pop. + stack pop. + + stack push: (stack top childrenNodes at: 5). + self assert: self topEntity sourceCode equals: ''. + self assert: (self topEntity isOfType: FASTCSSERROR). + self assert: (self topEntity isOfType: FamixTHasImmediateSource). + self assert: (self topEntity isOfType: FamixTSourceAnchor). + stack pop. + self assert: self topEntity source equals: '@supports (animation-name: test) { + div { animation-name: test; } +} +@supports (transform-style: preserve) or (-moz-transform-style: preserve) {} +@supports not ((text-align-last: justify) or (-moz-text-align-last: justify)) {} +@supports not selector(:matches(a, b)) {};' withPlatformLineEndings +] + +{ #category : 'tests' } +FASTCSSImporterTest >> testGeneratedTheNotSelector [ + + "Generated as regression test by TSFASTImporterTestGenerator>>#generateTestNamed:fromCode:protocol: + Regenerate executing: self regenerateTest: #testGeneratedTheNotSelector " + + self parse: 'a:not(:hover) {} +.b:not(c > .d) {};'. + + self assert: (fast allWithType: FASTCSSArguments) size equals: 2. + self assert: (fast allWithType: FASTCSSBlock) size equals: 2. + self assert: (fast allWithType: FASTCSSChildSelector) size equals: 1. + self assert: (fast allWithType: FASTCSSClassName) size equals: 5. + self assert: (fast allWithType: FASTCSSClassSelector) size equals: 2. + self assert: (fast allWithType: FASTCSSERROR) size equals: 1. + self assert: (fast allWithType: FASTCSSIdentifier) size equals: 3. + self assert: (fast allWithType: FASTCSSPseudoClassSelector) size equals: 3. + self assert: (fast allWithType: FASTCSSRuleSet) size equals: 2. + self assert: (fast allWithType: FASTCSSSelectors) size equals: 2. + self assert: (fast allWithType: FASTCSSStylesheet) size equals: 1. + self assert: (fast allWithType: FASTCSSTagName) size equals: 2. + + stack push: fast rootEntities anyOne. + self assert: self topEntity sourceCode equals: 'a:not(:hover) {} +.b:not(c > .d) {};' withPlatformLineEndings. + self assert: (self topEntity isOfType: FASTCSSStylesheet). + self assert: (self topEntity isOfType: FamixTHasImmediateSource). + self assert: (self topEntity isOfType: FamixTSourceAnchor). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 3. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: 'a:not(:hover) {}'. + self assert: (self topEntity isOfType: FASTCSSRuleSet). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 2. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: 'a:not(:hover)'. + self assert: (self topEntity isOfType: FASTCSSSelectors). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 1. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: 'a:not(:hover)'. + self assert: (self topEntity isOfType: FASTCSSPseudoClassSelector). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 3. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: 'a'. + self assert: (self topEntity isOfType: FASTCSSTagName). + stack pop. + + stack push: (stack top childrenNodes at: 2). + self assert: self topEntity sourceCode equals: 'not'. + self assert: (self topEntity isOfType: FASTCSSClassName). + stack pop. + + stack push: (stack top childrenNodes at: 3). + self assert: self topEntity sourceCode equals: '(:hover)'. + self assert: (self topEntity isOfType: FASTCSSArguments). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 1. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: ':hover'. + self assert: (self topEntity isOfType: FASTCSSPseudoClassSelector). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 1. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: 'hover'. + self assert: (self topEntity isOfType: FASTCSSClassName). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 1. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: 'hover'. + self assert: (self topEntity isOfType: FASTCSSIdentifier). + stack pop. + stack pop. + stack pop. + stack pop. + stack pop. + stack pop. + + stack push: (stack top childrenNodes at: 2). + self assert: self topEntity sourceCode equals: '{}'. + self assert: (self topEntity isOfType: FASTCSSBlock). + stack pop. + stack pop. + + stack push: (stack top childrenNodes at: 2). + self assert: self topEntity sourceCode equals: '.b:not(c > .d) {}'. + self assert: (self topEntity isOfType: FASTCSSRuleSet). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 2. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: '.b:not(c > .d)'. + self assert: (self topEntity isOfType: FASTCSSSelectors). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 1. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: '.b:not(c > .d)'. + self assert: (self topEntity isOfType: FASTCSSPseudoClassSelector). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 3. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: '.b'. + self assert: (self topEntity isOfType: FASTCSSClassSelector). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 1. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: 'b'. + self assert: (self topEntity isOfType: FASTCSSClassName). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 1. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: 'b'. + self assert: (self topEntity isOfType: FASTCSSIdentifier). + stack pop. + stack pop. + stack pop. + + stack push: (stack top childrenNodes at: 2). + self assert: self topEntity sourceCode equals: 'not'. + self assert: (self topEntity isOfType: FASTCSSClassName). + stack pop. + + stack push: (stack top childrenNodes at: 3). + self assert: self topEntity sourceCode equals: '(c > .d)'. + self assert: (self topEntity isOfType: FASTCSSArguments). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 1. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: 'c > .d'. + self assert: (self topEntity isOfType: FASTCSSChildSelector). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 2. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: 'c'. + self assert: (self topEntity isOfType: FASTCSSTagName). + stack pop. + + stack push: (stack top childrenNodes at: 2). + self assert: self topEntity sourceCode equals: '.d'. + self assert: (self topEntity isOfType: FASTCSSClassSelector). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 1. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: 'd'. + self assert: (self topEntity isOfType: FASTCSSClassName). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 1. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: 'd'. + self assert: (self topEntity isOfType: FASTCSSIdentifier). + stack pop. + stack pop. + stack pop. + stack pop. + stack pop. + stack pop. + stack pop. + + stack push: (stack top childrenNodes at: 2). + self assert: self topEntity sourceCode equals: '{}'. + self assert: (self topEntity isOfType: FASTCSSBlock). + stack pop. + stack pop. + + stack push: (stack top childrenNodes at: 3). + self assert: self topEntity sourceCode equals: ''. + self assert: (self topEntity isOfType: FASTCSSERROR). + self assert: (self topEntity isOfType: FamixTHasImmediateSource). + self assert: (self topEntity isOfType: FamixTSourceAnchor). + stack pop. + self assert: self topEntity source equals: 'a:not(:hover) {} +.b:not(c > .d) {};' withPlatformLineEndings +] + +{ #category : 'tests' } +FASTCSSImporterTest >> testGeneratedTypeSelectors [ + + "Generated as regression test by TSFASTImporterTestGenerator>>#generateTestNamed:fromCode:protocol: + Regenerate executing: self regenerateTest: #testGeneratedTypeSelectors " + + self parse: 'div, span {} +h1, h2, h3, h4 {};'. + + self assert: (fast allWithType: FASTCSSBlock) size equals: 2. + self assert: (fast allWithType: FASTCSSERROR) size equals: 1. + self assert: (fast allWithType: FASTCSSRuleSet) size equals: 2. + self assert: (fast allWithType: FASTCSSSelectors) size equals: 2. + self assert: (fast allWithType: FASTCSSStylesheet) size equals: 1. + self assert: (fast allWithType: FASTCSSTagName) size equals: 6. + + stack push: fast rootEntities anyOne. + self assert: self topEntity sourceCode equals: 'div, span {} +h1, h2, h3, h4 {};' withPlatformLineEndings. + self assert: (self topEntity isOfType: FASTCSSStylesheet). + self assert: (self topEntity isOfType: FamixTHasImmediateSource). + self assert: (self topEntity isOfType: FamixTSourceAnchor). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 3. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: 'div, span {}'. + self assert: (self topEntity isOfType: FASTCSSRuleSet). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 2. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: 'div, span'. + self assert: (self topEntity isOfType: FASTCSSSelectors). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 2. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: 'div'. + self assert: (self topEntity isOfType: FASTCSSTagName). + stack pop. + + stack push: (stack top childrenNodes at: 2). + self assert: self topEntity sourceCode equals: 'span'. + self assert: (self topEntity isOfType: FASTCSSTagName). + stack pop. + stack pop. + + stack push: (stack top childrenNodes at: 2). + self assert: self topEntity sourceCode equals: '{}'. + self assert: (self topEntity isOfType: FASTCSSBlock). + stack pop. + stack pop. + + stack push: (stack top childrenNodes at: 2). + self assert: self topEntity sourceCode equals: 'h1, h2, h3, h4 {}'. + self assert: (self topEntity isOfType: FASTCSSRuleSet). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 2. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: 'h1, h2, h3, h4'. + self assert: (self topEntity isOfType: FASTCSSSelectors). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 4. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: 'h1'. + self assert: (self topEntity isOfType: FASTCSSTagName). + stack pop. + + stack push: (stack top childrenNodes at: 2). + self assert: self topEntity sourceCode equals: 'h2'. + self assert: (self topEntity isOfType: FASTCSSTagName). + stack pop. + + stack push: (stack top childrenNodes at: 3). + self assert: self topEntity sourceCode equals: 'h3'. + self assert: (self topEntity isOfType: FASTCSSTagName). + stack pop. + + stack push: (stack top childrenNodes at: 4). + self assert: self topEntity sourceCode equals: 'h4'. + self assert: (self topEntity isOfType: FASTCSSTagName). + stack pop. + stack pop. + + stack push: (stack top childrenNodes at: 2). + self assert: self topEntity sourceCode equals: '{}'. + self assert: (self topEntity isOfType: FASTCSSBlock). + stack pop. + stack pop. + + stack push: (stack top childrenNodes at: 3). + self assert: self topEntity sourceCode equals: ''. + self assert: (self topEntity isOfType: FASTCSSERROR). + self assert: (self topEntity isOfType: FamixTHasImmediateSource). + self assert: (self topEntity isOfType: FamixTSourceAnchor). + stack pop. + self assert: self topEntity source equals: 'div, span {} +h1, h2, h3, h4 {};' withPlatformLineEndings +] + +{ #category : 'tests' } +FASTCSSImporterTest >> testGeneratedURLs [ + + "Generated as regression test by TSFASTImporterTestGenerator>>#generateTestNamed:fromCode:protocol: + Regenerate executing: self regenerateTest: #testGeneratedURLs " + + self parse: 'a { + b: http://something-else?foo=bar; +};'. + + self assert: (fast allWithType: FASTCSSBlock) size equals: 1. + self assert: (fast allWithType: FASTCSSDeclaration) size equals: 1. + self assert: (fast allWithType: FASTCSSERROR) size equals: 1. + self assert: (fast allWithType: FASTCSSPlainValue) size equals: 1. + self assert: (fast allWithType: FASTCSSPropertyName) size equals: 1. + self assert: (fast allWithType: FASTCSSRuleSet) size equals: 1. + self assert: (fast allWithType: FASTCSSSelectors) size equals: 1. + self assert: (fast allWithType: FASTCSSStylesheet) size equals: 1. + self assert: (fast allWithType: FASTCSSTagName) size equals: 1. + + stack push: fast rootEntities anyOne. + self assert: self topEntity sourceCode equals: 'a { + b: http://something-else?foo=bar; +};' withPlatformLineEndings. + self assert: (self topEntity isOfType: FASTCSSStylesheet). + self assert: (self topEntity isOfType: FamixTHasImmediateSource). + self assert: (self topEntity isOfType: FamixTSourceAnchor). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 2. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: 'a { + b: http://something-else?foo=bar; +}' withPlatformLineEndings. + self assert: (self topEntity isOfType: FASTCSSRuleSet). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 2. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: 'a'. + self assert: (self topEntity isOfType: FASTCSSSelectors). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 1. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: 'a'. + self assert: (self topEntity isOfType: FASTCSSTagName). + stack pop. + stack pop. + + stack push: (stack top childrenNodes at: 2). + self assert: self topEntity sourceCode equals: '{ + b: http://something-else?foo=bar; +}' withPlatformLineEndings. + self assert: (self topEntity isOfType: FASTCSSBlock). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 1. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: 'b: http://something-else?foo=bar;'. + self assert: (self topEntity isOfType: FASTCSSDeclaration). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 2. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: 'b'. + self assert: (self topEntity isOfType: FASTCSSPropertyName). + stack pop. + + stack push: (stack top childrenNodes at: 2). + self assert: self topEntity sourceCode equals: 'http://something-else?foo=bar'. + self assert: (self topEntity isOfType: FASTCSSPlainValue). + stack pop. + stack pop. + stack pop. + stack pop. + + stack push: (stack top childrenNodes at: 2). + self assert: self topEntity sourceCode equals: ''. + self assert: (self topEntity isOfType: FASTCSSERROR). + self assert: (self topEntity isOfType: FamixTHasImmediateSource). + self assert: (self topEntity isOfType: FamixTSourceAnchor). + stack pop. + self assert: self topEntity source equals: 'a { + b: http://something-else?foo=bar; +};' withPlatformLineEndings +] + +{ #category : 'tests' } +FASTCSSImporterTest >> testGeneratedUniversalSelectors [ + + "Generated as regression test by TSFASTImporterTestGenerator>>#generateTestNamed:fromCode:protocol: + Regenerate executing: self regenerateTest: #testGeneratedUniversalSelectors " + + self parse: '* {};'. + + self assert: (fast allWithType: FASTCSSBlock) size equals: 1. + self assert: (fast allWithType: FASTCSSERROR) size equals: 1. + self assert: (fast allWithType: FASTCSSRuleSet) size equals: 1. + self assert: (fast allWithType: FASTCSSSelectors) size equals: 1. + self assert: (fast allWithType: FASTCSSStylesheet) size equals: 1. + self assert: (fast allWithType: FASTCSSUniversalSelector) size equals: 1. + + stack push: fast rootEntities anyOne. + self assert: self topEntity sourceCode equals: '* {};'. + self assert: (self topEntity isOfType: FASTCSSStylesheet). + self assert: (self topEntity isOfType: FamixTHasImmediateSource). + self assert: (self topEntity isOfType: FamixTSourceAnchor). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 2. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: '* {}'. + self assert: (self topEntity isOfType: FASTCSSRuleSet). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 2. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: '*'. + self assert: (self topEntity isOfType: FASTCSSSelectors). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 1. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: '*'. + self assert: (self topEntity isOfType: FASTCSSUniversalSelector). + stack pop. + stack pop. + + stack push: (stack top childrenNodes at: 2). + self assert: self topEntity sourceCode equals: '{}'. + self assert: (self topEntity isOfType: FASTCSSBlock). + stack pop. + stack pop. + + stack push: (stack top childrenNodes at: 2). + self assert: self topEntity sourceCode equals: ''. + self assert: (self topEntity isOfType: FASTCSSERROR). + self assert: (self topEntity isOfType: FamixTHasImmediateSource). + self assert: (self topEntity isOfType: FamixTSourceAnchor). + stack pop. + self assert: self topEntity source equals: '* {};' +] + +{ #category : 'as yet unclassified' } +FASTCSSImporterTest >> topEntity [ + ^ stack top +] diff --git a/src/FAST-CSS-TestsGenerated/package.st b/src/FAST-CSS-TestsGenerated/package.st new file mode 100644 index 0000000..eee837c --- /dev/null +++ b/src/FAST-CSS-TestsGenerated/package.st @@ -0,0 +1 @@ +Package { #name : 'FAST-CSS-TestsGenerated' } diff --git a/src/FAST-CSS-Tools/FASTCSSImporter.class.st b/src/FAST-CSS-Tools/FASTCSSImporter.class.st new file mode 100644 index 0000000..b98cc2d --- /dev/null +++ b/src/FAST-CSS-Tools/FASTCSSImporter.class.st @@ -0,0 +1,12 @@ +Class { + #name : 'FASTCSSImporter', + #superclass : 'TSFASTAbstractImporter', + #category : 'FAST-CSS-Tools', + #package : 'FAST-CSS-Tools' +} + +{ #category : 'as yet unclassified' } +FASTCSSImporter >> tsLanguage [ + + ^ TSLanguage css +] From 0edf4ec4273f8e9b29d472b9c6699fd5e9adc47f Mon Sep 17 00:00:00 2001 From: alesshosry Date: Wed, 30 Sep 2026 15:21:38 +0200 Subject: [PATCH 2/3] regenerate tests to fix the issue with errors --- src/FAST-CSS-Model/FASTCSSERROR.class.st | 11 + .../FASTCSSImporterTest.class.st | 1070 +++++++++-------- 2 files changed, 554 insertions(+), 527 deletions(-) diff --git a/src/FAST-CSS-Model/FASTCSSERROR.class.st b/src/FAST-CSS-Model/FASTCSSERROR.class.st index f34194e..3320dc6 100644 --- a/src/FAST-CSS-Model/FASTCSSERROR.class.st +++ b/src/FAST-CSS-Model/FASTCSSERROR.class.st @@ -34,3 +34,14 @@ FASTCSSERROR class >> annotation [ ] + +{ #category : 'accessing' } +FASTCSSERROR >> sourceText [ + + "^ self source" + + ^ self source ifNil: [ + self parentNode + ifNotNil: [ :parent | parent sourceText ] + ifNil: [ '' ] ] +] diff --git a/src/FAST-CSS-TestsGenerated/FASTCSSImporterTest.class.st b/src/FAST-CSS-TestsGenerated/FASTCSSImporterTest.class.st index 93ff63c..9eea0d5 100644 --- a/src/FAST-CSS-TestsGenerated/FASTCSSImporterTest.class.st +++ b/src/FAST-CSS-TestsGenerated/FASTCSSImporterTest.class.st @@ -190,7 +190,7 @@ a[b] {};' withPlatformLineEndings. stack pop. stack push: (stack top childrenNodes at: 5). - self assert: self topEntity sourceCode equals: ''. + self assert: self topEntity sourceCode equals: ';'. self assert: (self topEntity isOfType: FASTCSSERROR). self assert: (self topEntity isOfType: FamixTHasImmediateSource). self assert: (self topEntity isOfType: FamixTSourceAnchor). @@ -201,6 +201,369 @@ a[b] {};' withPlatformLineEndings. a[b] {};' withPlatformLineEndings ] +{ #category : 'tests' } +FASTCSSImporterTest >> testGeneratedBinaryArithmeticOperators [ + + "Generated as regression test by TSFASTImporterTestGenerator>>#generateTestNamed:fromCode:protocol: + Regenerate executing: self regenerateTest: #testGeneratedBinaryArithmeticOperators " + + self parse: 'a { + width: calc(100% - 80px); + aspect-ratio: 1/2; + font-size: calc(10px + (56 - 10) * ((100vw - 320px) / (1920 - 320))); +};'. + + self assert: (fast allWithType: FASTCSSArguments) size equals: 2. + self assert: (fast allWithType: FASTCSSBinaryExpression) size equals: 8. + self assert: (fast allWithType: FASTCSSBlock) size equals: 1. + self assert: (fast allWithType: FASTCSSCallExpression) size equals: 2. + self assert: (fast allWithType: FASTCSSDeclaration) size equals: 3. + self assert: (fast allWithType: FASTCSSERROR) size equals: 1. + self assert: (fast allWithType: FASTCSSFunctionName) size equals: 2. + self assert: (fast allWithType: FASTCSSIntegerValue) size equals: 11. + self assert: (fast allWithType: FASTCSSParenthesizedValue) size equals: 4. + self assert: (fast allWithType: FASTCSSPropertyName) size equals: 3. + self assert: (fast allWithType: FASTCSSRuleSet) size equals: 1. + self assert: (fast allWithType: FASTCSSSelectors) size equals: 1. + self assert: (fast allWithType: FASTCSSStylesheet) size equals: 1. + self assert: (fast allWithType: FASTCSSTagName) size equals: 1. + self assert: (fast allWithType: FASTCSSUnit) size equals: 5. + + stack push: fast rootEntities anyOne. + self assert: self topEntity sourceCode equals: 'a { + width: calc(100% - 80px); + aspect-ratio: 1/2; + font-size: calc(10px + (56 - 10) * ((100vw - 320px) / (1920 - 320))); +};' withPlatformLineEndings. + self assert: (self topEntity isOfType: FASTCSSStylesheet). + self assert: (self topEntity isOfType: FamixTHasImmediateSource). + self assert: (self topEntity isOfType: FamixTSourceAnchor). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 2. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: 'a { + width: calc(100% - 80px); + aspect-ratio: 1/2; + font-size: calc(10px + (56 - 10) * ((100vw - 320px) / (1920 - 320))); +}' withPlatformLineEndings. + self assert: (self topEntity isOfType: FASTCSSRuleSet). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 2. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: 'a'. + self assert: (self topEntity isOfType: FASTCSSSelectors). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 1. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: 'a'. + self assert: (self topEntity isOfType: FASTCSSTagName). + stack pop. + stack pop. + + stack push: (stack top childrenNodes at: 2). + self assert: self topEntity sourceCode equals: '{ + width: calc(100% - 80px); + aspect-ratio: 1/2; + font-size: calc(10px + (56 - 10) * ((100vw - 320px) / (1920 - 320))); +}' withPlatformLineEndings. + self assert: (self topEntity isOfType: FASTCSSBlock). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 3. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: 'width: calc(100% - 80px);'. + self assert: (self topEntity isOfType: FASTCSSDeclaration). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 2. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: 'width'. + self assert: (self topEntity isOfType: FASTCSSPropertyName). + stack pop. + + stack push: (stack top childrenNodes at: 2). + self assert: self topEntity sourceCode equals: 'calc(100% - 80px)'. + self assert: (self topEntity isOfType: FASTCSSCallExpression). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 2. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: 'calc'. + self assert: (self topEntity isOfType: FASTCSSFunctionName). + stack pop. + + stack push: (stack top childrenNodes at: 2). + self assert: self topEntity sourceCode equals: '(100% - 80px)'. + self assert: (self topEntity isOfType: FASTCSSArguments). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 1. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: '100% - 80px'. + self assert: (self topEntity isOfType: FASTCSSBinaryExpression). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 2. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: '100%'. + self assert: (self topEntity isOfType: FASTCSSIntegerValue). + + "Testing value of monovalue relation childrenNode" + self assert: self topEntity childrenNode isNotNil. + + stack push: self topEntity childrenNode. + self assert: self topEntity sourceCode equals: '%'. + self assert: (self topEntity isOfType: FASTCSSUnit). + stack pop. + stack pop. + + stack push: (stack top childrenNodes at: 2). + self assert: self topEntity sourceCode equals: '80px'. + self assert: (self topEntity isOfType: FASTCSSIntegerValue). + + "Testing value of monovalue relation childrenNode" + self assert: self topEntity childrenNode isNotNil. + + stack push: self topEntity childrenNode. + self assert: self topEntity sourceCode equals: 'px'. + self assert: (self topEntity isOfType: FASTCSSUnit). + stack pop. + stack pop. + stack pop. + stack pop. + stack pop. + stack pop. + + stack push: (stack top childrenNodes at: 2). + self assert: self topEntity sourceCode equals: 'aspect-ratio: 1/2;'. + self assert: (self topEntity isOfType: FASTCSSDeclaration). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 2. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: 'aspect-ratio'. + self assert: (self topEntity isOfType: FASTCSSPropertyName). + stack pop. + + stack push: (stack top childrenNodes at: 2). + self assert: self topEntity sourceCode equals: '1/2'. + self assert: (self topEntity isOfType: FASTCSSBinaryExpression). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 2. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: '1'. + self assert: (self topEntity isOfType: FASTCSSIntegerValue). + stack pop. + + stack push: (stack top childrenNodes at: 2). + self assert: self topEntity sourceCode equals: '2'. + self assert: (self topEntity isOfType: FASTCSSIntegerValue). + stack pop. + stack pop. + stack pop. + + stack push: (stack top childrenNodes at: 3). + self assert: self topEntity sourceCode equals: 'font-size: calc(10px + (56 - 10) * ((100vw - 320px) / (1920 - 320)));'. + self assert: (self topEntity isOfType: FASTCSSDeclaration). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 2. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: 'font-size'. + self assert: (self topEntity isOfType: FASTCSSPropertyName). + stack pop. + + stack push: (stack top childrenNodes at: 2). + self assert: self topEntity sourceCode equals: 'calc(10px + (56 - 10) * ((100vw - 320px) / (1920 - 320)))'. + self assert: (self topEntity isOfType: FASTCSSCallExpression). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 2. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: 'calc'. + self assert: (self topEntity isOfType: FASTCSSFunctionName). + stack pop. + + stack push: (stack top childrenNodes at: 2). + self assert: self topEntity sourceCode equals: '(10px + (56 - 10) * ((100vw - 320px) / (1920 - 320)))'. + self assert: (self topEntity isOfType: FASTCSSArguments). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 1. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: '10px + (56 - 10) * ((100vw - 320px) / (1920 - 320))'. + self assert: (self topEntity isOfType: FASTCSSBinaryExpression). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 2. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: '10px + (56 - 10)'. + self assert: (self topEntity isOfType: FASTCSSBinaryExpression). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 2. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: '10px'. + self assert: (self topEntity isOfType: FASTCSSIntegerValue). + + "Testing value of monovalue relation childrenNode" + self assert: self topEntity childrenNode isNotNil. + + stack push: self topEntity childrenNode. + self assert: self topEntity sourceCode equals: 'px'. + self assert: (self topEntity isOfType: FASTCSSUnit). + stack pop. + stack pop. + + stack push: (stack top childrenNodes at: 2). + self assert: self topEntity sourceCode equals: '(56 - 10)'. + self assert: (self topEntity isOfType: FASTCSSParenthesizedValue). + + "Testing value of monovalue relation childrenNode" + self assert: self topEntity childrenNode isNotNil. + + stack push: self topEntity childrenNode. + self assert: self topEntity sourceCode equals: '56 - 10'. + self assert: (self topEntity isOfType: FASTCSSBinaryExpression). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 2. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: '56'. + self assert: (self topEntity isOfType: FASTCSSIntegerValue). + stack pop. + + stack push: (stack top childrenNodes at: 2). + self assert: self topEntity sourceCode equals: '10'. + self assert: (self topEntity isOfType: FASTCSSIntegerValue). + stack pop. + stack pop. + stack pop. + stack pop. + + stack push: (stack top childrenNodes at: 2). + self assert: self topEntity sourceCode equals: '((100vw - 320px) / (1920 - 320))'. + self assert: (self topEntity isOfType: FASTCSSParenthesizedValue). + + "Testing value of monovalue relation childrenNode" + self assert: self topEntity childrenNode isNotNil. + + stack push: self topEntity childrenNode. + self assert: self topEntity sourceCode equals: '(100vw - 320px) / (1920 - 320)'. + self assert: (self topEntity isOfType: FASTCSSBinaryExpression). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 2. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: '(100vw - 320px)'. + self assert: (self topEntity isOfType: FASTCSSParenthesizedValue). + + "Testing value of monovalue relation childrenNode" + self assert: self topEntity childrenNode isNotNil. + + stack push: self topEntity childrenNode. + self assert: self topEntity sourceCode equals: '100vw - 320px'. + self assert: (self topEntity isOfType: FASTCSSBinaryExpression). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 2. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: '100vw'. + self assert: (self topEntity isOfType: FASTCSSIntegerValue). + + "Testing value of monovalue relation childrenNode" + self assert: self topEntity childrenNode isNotNil. + + stack push: self topEntity childrenNode. + self assert: self topEntity sourceCode equals: 'vw'. + self assert: (self topEntity isOfType: FASTCSSUnit). + stack pop. + stack pop. + + stack push: (stack top childrenNodes at: 2). + self assert: self topEntity sourceCode equals: '320px'. + self assert: (self topEntity isOfType: FASTCSSIntegerValue). + + "Testing value of monovalue relation childrenNode" + self assert: self topEntity childrenNode isNotNil. + + stack push: self topEntity childrenNode. + self assert: self topEntity sourceCode equals: 'px'. + self assert: (self topEntity isOfType: FASTCSSUnit). + stack pop. + stack pop. + stack pop. + stack pop. + + stack push: (stack top childrenNodes at: 2). + self assert: self topEntity sourceCode equals: '(1920 - 320)'. + self assert: (self topEntity isOfType: FASTCSSParenthesizedValue). + + "Testing value of monovalue relation childrenNode" + self assert: self topEntity childrenNode isNotNil. + + stack push: self topEntity childrenNode. + self assert: self topEntity sourceCode equals: '1920 - 320'. + self assert: (self topEntity isOfType: FASTCSSBinaryExpression). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 2. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: '1920'. + self assert: (self topEntity isOfType: FASTCSSIntegerValue). + stack pop. + + stack push: (stack top childrenNodes at: 2). + self assert: self topEntity sourceCode equals: '320'. + self assert: (self topEntity isOfType: FASTCSSIntegerValue). + stack pop. + stack pop. + stack pop. + stack pop. + stack pop. + stack pop. + stack pop. + stack pop. + stack pop. + stack pop. + stack pop. + + stack push: (stack top childrenNodes at: 2). + self assert: self topEntity sourceCode equals: ';'. + self assert: (self topEntity isOfType: FASTCSSERROR). + self assert: (self topEntity isOfType: FamixTHasImmediateSource). + self assert: (self topEntity isOfType: FamixTSourceAnchor). + stack pop. + self assert: self topEntity source equals: 'a { + width: calc(100% - 80px); + aspect-ratio: 1/2; + font-size: calc(10px + (56 - 10) * ((100vw - 320px) / (1920 - 320))); +};' withPlatformLineEndings +] + { #category : 'tests' } FASTCSSImporterTest >> testGeneratedCallsWhereEachArgumentHasMultipleValues [ @@ -574,7 +937,7 @@ FASTCSSImporterTest >> testGeneratedCallsWhereEachArgumentHasMultipleValues [ stack pop. stack push: (stack top childrenNodes at: 2). - self assert: self topEntity sourceCode equals: ''. + self assert: self topEntity sourceCode equals: ';'. self assert: (self topEntity isOfType: FASTCSSERROR). self assert: (self topEntity isOfType: FamixTHasImmediateSource). self assert: (self topEntity isOfType: FamixTSourceAnchor). @@ -630,7 +993,7 @@ FASTCSSImporterTest >> testGeneratedCharsetStatements [ stack pop. stack push: (stack top childrenNodes at: 2). - self assert: self topEntity sourceCode equals: ''. + self assert: self topEntity sourceCode equals: ';'. self assert: (self topEntity isOfType: FASTCSSERROR). self assert: (self topEntity isOfType: FamixTHasImmediateSource). self assert: (self topEntity isOfType: FamixTSourceAnchor). @@ -757,7 +1120,7 @@ c > d > e {};' withPlatformLineEndings. stack pop. stack push: (stack top childrenNodes at: 3). - self assert: self topEntity sourceCode equals: ''. + self assert: self topEntity sourceCode equals: ';'. self assert: (self topEntity isOfType: FASTCSSERROR). self assert: (self topEntity isOfType: FamixTHasImmediateSource). self assert: (self topEntity isOfType: FamixTSourceAnchor). @@ -927,7 +1290,7 @@ div.class-b, .class-c.class-d {};' withPlatformLineEndings. stack pop. stack push: (stack top childrenNodes at: 3). - self assert: self topEntity sourceCode equals: ''. + self assert: self topEntity sourceCode equals: ';'. self assert: (self topEntity isOfType: FASTCSSERROR). self assert: (self topEntity isOfType: FamixTHasImmediateSource). self assert: (self topEntity isOfType: FamixTSourceAnchor). @@ -1041,7 +1404,7 @@ FASTCSSImporterTest >> testGeneratedColorLiterals [ stack pop. stack push: (stack top childrenNodes at: 2). - self assert: self topEntity sourceCode equals: ''. + self assert: self topEntity sourceCode equals: ';'. self assert: (self topEntity isOfType: FASTCSSERROR). self assert: (self topEntity isOfType: FamixTHasImmediateSource). self assert: (self topEntity isOfType: FamixTSourceAnchor). @@ -1052,6 +1415,105 @@ FASTCSSImporterTest >> testGeneratedColorLiterals [ };' withPlatformLineEndings ] +{ #category : 'tests' } +FASTCSSImporterTest >> testGeneratedCommentsInDeclarations [ + + "Generated as regression test by TSFASTImporterTestGenerator>>#generateTestNamed:fromCode:protocol: + Regenerate executing: self regenerateTest: #testGeneratedCommentsInDeclarations " + + self parse: '& { + position: /*${}*/ relative; +};'. + + self assert: (fast allWithType: FASTCSSBlock) size equals: 1. + self assert: (fast allWithType: FASTCSSComment) size equals: 1. + self assert: (fast allWithType: FASTCSSDeclaration) size equals: 1. + self assert: (fast allWithType: FASTCSSERROR) size equals: 1. + self assert: (fast allWithType: FASTCSSNestingSelector) size equals: 1. + self assert: (fast allWithType: FASTCSSPlainValue) size equals: 1. + self assert: (fast allWithType: FASTCSSPropertyName) size equals: 1. + self assert: (fast allWithType: FASTCSSRuleSet) size equals: 1. + self assert: (fast allWithType: FASTCSSSelectors) size equals: 1. + self assert: (fast allWithType: FASTCSSStylesheet) size equals: 1. + + stack push: fast rootEntities anyOne. + self assert: self topEntity sourceCode equals: '& { + position: /*${}*/ relative; +};' withPlatformLineEndings. + self assert: (self topEntity isOfType: FASTCSSStylesheet). + self assert: (self topEntity isOfType: FamixTHasImmediateSource). + self assert: (self topEntity isOfType: FamixTSourceAnchor). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 2. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: '& { + position: /*${}*/ relative; +}' withPlatformLineEndings. + self assert: (self topEntity isOfType: FASTCSSRuleSet). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 2. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: '&'. + self assert: (self topEntity isOfType: FASTCSSSelectors). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 1. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: '&'. + self assert: (self topEntity isOfType: FASTCSSNestingSelector). + stack pop. + stack pop. + + stack push: (stack top childrenNodes at: 2). + self assert: self topEntity sourceCode equals: '{ + position: /*${}*/ relative; +}' withPlatformLineEndings. + self assert: (self topEntity isOfType: FASTCSSBlock). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 1. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: 'position: /*${}*/ relative;'. + self assert: (self topEntity isOfType: FASTCSSDeclaration). + + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 3. + + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: 'position'. + self assert: (self topEntity isOfType: FASTCSSPropertyName). + stack pop. + + stack push: (stack top childrenNodes at: 2). + self assert: self topEntity sourceCode equals: '/*${}*/'. + self assert: (self topEntity isOfType: FASTCSSComment). + stack pop. + + stack push: (stack top childrenNodes at: 3). + self assert: self topEntity sourceCode equals: 'relative'. + self assert: (self topEntity isOfType: FASTCSSPlainValue). + stack pop. + stack pop. + stack pop. + stack pop. + + stack push: (stack top childrenNodes at: 2). + self assert: self topEntity sourceCode equals: ';'. + self assert: (self topEntity isOfType: FASTCSSERROR). + self assert: (self topEntity isOfType: FamixTHasImmediateSource). + self assert: (self topEntity isOfType: FamixTSourceAnchor). + stack pop. + self assert: self topEntity source equals: '& { + position: /*${}*/ relative; +};' withPlatformLineEndings +] + { #category : 'tests' } FASTCSSImporterTest >> testGeneratedCommentsRightAfterNumbers [ @@ -1095,8 +1557,7 @@ a { self assert: self topEntity childrenNodes size equals: 3. stack push: (stack top childrenNodes at: 1). - self assert: self topEntity sourceCode equals: '// A comment -'. + self assert: self topEntity sourceCode equals: '// A comment'. self assert: (self topEntity isOfType: FASTCSSJsComment). stack pop. @@ -1305,7 +1766,7 @@ a { stack pop. stack push: (stack top childrenNodes at: 3). - self assert: self topEntity sourceCode equals: ''. + self assert: self topEntity sourceCode equals: ';'. self assert: (self topEntity isOfType: FASTCSSERROR). self assert: (self topEntity isOfType: FamixTHasImmediateSource). self assert: (self topEntity isOfType: FamixTSourceAnchor). @@ -1456,7 +1917,7 @@ a-property: calc(5px + var(--a-variable));;' withPlatformLineEndings. stack pop. stack push: (stack top childrenNodes at: 3). - self assert: self topEntity sourceCode equals: ''. + self assert: self topEntity sourceCode equals: ';'. self assert: (self topEntity isOfType: FASTCSSERROR). self assert: (self topEntity isOfType: FamixTHasImmediateSource). self assert: (self topEntity isOfType: FamixTSourceAnchor). @@ -1570,7 +2031,7 @@ FASTCSSImporterTest >> testGeneratedDeclarationsWithoutTrailingSemicolons [ stack pop. stack push: (stack top childrenNodes at: 2). - self assert: self topEntity sourceCode equals: ''. + self assert: self topEntity sourceCode equals: ';'. self assert: (self topEntity isOfType: FASTCSSERROR). self assert: (self topEntity isOfType: FamixTHasImmediateSource). self assert: (self topEntity isOfType: FamixTSourceAnchor). @@ -1742,7 +2203,7 @@ f * {};' withPlatformLineEndings. stack pop. stack push: (stack top childrenNodes at: 4). - self assert: self topEntity sourceCode equals: ''. + self assert: self topEntity sourceCode equals: ';'. self assert: (self topEntity isOfType: FASTCSSERROR). self assert: (self topEntity isOfType: FamixTHasImmediateSource). self assert: (self topEntity isOfType: FamixTSourceAnchor). @@ -1943,7 +2404,7 @@ FASTCSSImporterTest >> testGeneratedEscapeSequences [ stack pop. stack push: (stack top childrenNodes at: 3). - self assert: self topEntity sourceCode equals: ''. + self assert: self topEntity sourceCode equals: ';'. self assert: (self topEntity isOfType: FASTCSSERROR). self assert: (self topEntity isOfType: FamixTHasImmediateSource). self assert: (self topEntity isOfType: FamixTSourceAnchor). @@ -2078,7 +2539,7 @@ FASTCSSImporterTest >> testGeneratedFunctionCalls [ stack pop. stack push: (stack top childrenNodes at: 2). - self assert: self topEntity sourceCode equals: ''. + self assert: self topEntity sourceCode equals: ';'. self assert: (self topEntity isOfType: FASTCSSERROR). self assert: (self topEntity isOfType: FamixTHasImmediateSource). self assert: (self topEntity isOfType: FamixTSourceAnchor). @@ -2167,7 +2628,7 @@ FASTCSSImporterTest >> testGeneratedIdSelectors [ stack pop. stack push: (stack top childrenNodes at: 2). - self assert: self topEntity sourceCode equals: ''. + self assert: self topEntity sourceCode equals: ';'. self assert: (self topEntity isOfType: FASTCSSERROR). self assert: (self topEntity isOfType: FamixTHasImmediateSource). self assert: (self topEntity isOfType: FamixTSourceAnchor). @@ -2394,7 +2855,7 @@ FASTCSSImporterTest >> testGeneratedImportStatements [ stack pop. stack push: (stack top childrenNodes at: 6). - self assert: self topEntity sourceCode equals: ''. + self assert: self topEntity sourceCode equals: ';'. self assert: (self topEntity isOfType: FASTCSSERROR). self assert: (self topEntity isOfType: FamixTHasImmediateSource). self assert: (self topEntity isOfType: FamixTSourceAnchor). @@ -2495,7 +2956,7 @@ FASTCSSImporterTest >> testGeneratedImportantDeclarations [ stack pop. stack push: (stack top childrenNodes at: 2). - self assert: self topEntity sourceCode equals: ''. + self assert: self topEntity sourceCode equals: ';'. self assert: (self topEntity isOfType: FASTCSSERROR). self assert: (self topEntity isOfType: FamixTHasImmediateSource). self assert: (self topEntity isOfType: FamixTSourceAnchor). @@ -2807,7 +3268,7 @@ FASTCSSImporterTest >> testGeneratedKeyframesStatements [ stack pop. stack push: (stack top childrenNodes at: 3). - self assert: self topEntity sourceCode equals: ''. + self assert: self topEntity sourceCode equals: ';'. self assert: (self topEntity isOfType: FASTCSSERROR). self assert: (self topEntity isOfType: FamixTHasImmediateSource). self assert: (self topEntity isOfType: FamixTSourceAnchor). @@ -3213,7 +3674,7 @@ FASTCSSImporterTest >> testGeneratedMediaStatements [ stack pop. stack push: (stack top childrenNodes at: 6). - self assert: self topEntity sourceCode equals: ''. + self assert: self topEntity sourceCode equals: ';'. self assert: (self topEntity isOfType: FASTCSSERROR). self assert: (self topEntity isOfType: FamixTHasImmediateSource). self assert: (self topEntity isOfType: FamixTSourceAnchor). @@ -3476,7 +3937,7 @@ FASTCSSImporterTest >> testGeneratedNamespaceStatements [ stack pop. stack push: (stack top childrenNodes at: 9). - self assert: self topEntity sourceCode equals: ''. + self assert: self topEntity sourceCode equals: ';'. self assert: (self topEntity isOfType: FASTCSSERROR). self assert: (self topEntity isOfType: FamixTHasImmediateSource). self assert: (self topEntity isOfType: FamixTSourceAnchor). @@ -3794,7 +4255,7 @@ FASTCSSImporterTest >> testGeneratedNestedCombinators [ stack pop. stack push: (stack top childrenNodes at: 2). - self assert: self topEntity sourceCode equals: ''. + self assert: self topEntity sourceCode equals: ';'. self assert: (self topEntity isOfType: FASTCSSERROR). self assert: (self topEntity isOfType: FamixTHasImmediateSource). self assert: (self topEntity isOfType: FamixTSourceAnchor). @@ -4010,7 +4471,7 @@ FASTCSSImporterTest >> testGeneratedNestingSelectors [ stack pop. stack push: (stack top childrenNodes at: 2). - self assert: self topEntity sourceCode equals: ''. + self assert: self topEntity sourceCode equals: ';'. self assert: (self topEntity isOfType: FASTCSSERROR). self assert: (self topEntity isOfType: FamixTHasImmediateSource). self assert: (self topEntity isOfType: FamixTSourceAnchor). @@ -4054,474 +4515,111 @@ FASTCSSImporterTest >> testGeneratedNoSpacesAfterColons [ self assert: (self topEntity isOfType: FamixTHasImmediateSource). self assert: (self topEntity isOfType: FamixTSourceAnchor). - "Testing value of multivalued relation childrenNodes" - self assert: self topEntity childrenNodes size equals: 2. - - stack push: (stack top childrenNodes at: 1). - self assert: self topEntity sourceCode equals: 'div { - all:unset; - display:flex; - justify-content:center; -}' withPlatformLineEndings. - self assert: (self topEntity isOfType: FASTCSSRuleSet). - - "Testing value of multivalued relation childrenNodes" - self assert: self topEntity childrenNodes size equals: 2. - - stack push: (stack top childrenNodes at: 1). - self assert: self topEntity sourceCode equals: 'div'. - self assert: (self topEntity isOfType: FASTCSSSelectors). - - "Testing value of multivalued relation childrenNodes" - self assert: self topEntity childrenNodes size equals: 1. - - stack push: (stack top childrenNodes at: 1). - self assert: self topEntity sourceCode equals: 'div'. - self assert: (self topEntity isOfType: FASTCSSTagName). - stack pop. - stack pop. - - stack push: (stack top childrenNodes at: 2). - self assert: self topEntity sourceCode equals: '{ - all:unset; - display:flex; - justify-content:center; -}' withPlatformLineEndings. - self assert: (self topEntity isOfType: FASTCSSBlock). - - "Testing value of multivalued relation childrenNodes" - self assert: self topEntity childrenNodes size equals: 3. - - stack push: (stack top childrenNodes at: 1). - self assert: self topEntity sourceCode equals: 'all:unset;'. - self assert: (self topEntity isOfType: FASTCSSDeclaration). - - "Testing value of multivalued relation childrenNodes" - self assert: self topEntity childrenNodes size equals: 2. - - stack push: (stack top childrenNodes at: 1). - self assert: self topEntity sourceCode equals: 'all'. - self assert: (self topEntity isOfType: FASTCSSPropertyName). - stack pop. - - stack push: (stack top childrenNodes at: 2). - self assert: self topEntity sourceCode equals: 'unset'. - self assert: (self topEntity isOfType: FASTCSSPlainValue). - stack pop. - stack pop. - - stack push: (stack top childrenNodes at: 2). - self assert: self topEntity sourceCode equals: 'display:flex;'. - self assert: (self topEntity isOfType: FASTCSSDeclaration). - - "Testing value of multivalued relation childrenNodes" - self assert: self topEntity childrenNodes size equals: 2. - - stack push: (stack top childrenNodes at: 1). - self assert: self topEntity sourceCode equals: 'display'. - self assert: (self topEntity isOfType: FASTCSSPropertyName). - stack pop. - - stack push: (stack top childrenNodes at: 2). - self assert: self topEntity sourceCode equals: 'flex'. - self assert: (self topEntity isOfType: FASTCSSPlainValue). - stack pop. - stack pop. - - stack push: (stack top childrenNodes at: 3). - self assert: self topEntity sourceCode equals: 'justify-content:center;'. - self assert: (self topEntity isOfType: FASTCSSDeclaration). - - "Testing value of multivalued relation childrenNodes" - self assert: self topEntity childrenNodes size equals: 2. - - stack push: (stack top childrenNodes at: 1). - self assert: self topEntity sourceCode equals: 'justify-content'. - self assert: (self topEntity isOfType: FASTCSSPropertyName). - stack pop. - - stack push: (stack top childrenNodes at: 2). - self assert: self topEntity sourceCode equals: 'center'. - self assert: (self topEntity isOfType: FASTCSSPlainValue). - stack pop. - stack pop. - stack pop. - stack pop. - - stack push: (stack top childrenNodes at: 2). - self assert: self topEntity sourceCode equals: ''. - self assert: (self topEntity isOfType: FASTCSSERROR). - self assert: (self topEntity isOfType: FamixTHasImmediateSource). - self assert: (self topEntity isOfType: FamixTSourceAnchor). - stack pop. - self assert: self topEntity source equals: 'div { - all:unset; - display:flex; - justify-content:center; -};' withPlatformLineEndings -] - -{ #category : 'tests' } -FASTCSSImporterTest >> testGeneratedNthchildAndNthlastchildSelectors [ - - "Generated as regression test by TSFASTImporterTestGenerator>>#generateTestNamed:fromCode:protocol: - Regenerate executing: self regenerateTest: #testGeneratedNthchildAndNthlastchildSelectors " - - self parse: ':nth-child(2) {} -:nth-last-child(-n) {} -:nth-last-child(2n+1) {} -:nth-child(2n + 2) {} -:nth-last-child(-n) {} -:nth-child(2n of a.external) {};'. - - self assert: (fast allWithType: FASTCSSArguments) size equals: 6. - self assert: (fast allWithType: FASTCSSBlock) size equals: 6. - self assert: (fast allWithType: FASTCSSClassName) size equals: 7. - self assert: (fast allWithType: FASTCSSClassSelector) size equals: 1. - self assert: (fast allWithType: FASTCSSERROR) size equals: 1. - self assert: (fast allWithType: FASTCSSIdentifier) size equals: 1. - self assert: (fast allWithType: FASTCSSIntegerValue) size equals: 1. - self assert: (fast allWithType: FASTCSSPlainValue) size equals: 5. - self assert: (fast allWithType: FASTCSSPseudoClassSelector) size equals: 6. - self assert: (fast allWithType: FASTCSSRuleSet) size equals: 6. - self assert: (fast allWithType: FASTCSSSelectors) size equals: 6. - self assert: (fast allWithType: FASTCSSStylesheet) size equals: 1. - self assert: (fast allWithType: FASTCSSTagName) size equals: 1. - - stack push: fast rootEntities anyOne. - self assert: self topEntity sourceCode equals: ':nth-child(2) {} -:nth-last-child(-n) {} -:nth-last-child(2n+1) {} -:nth-child(2n + 2) {} -:nth-last-child(-n) {} -:nth-child(2n of a.external) {};' withPlatformLineEndings. - self assert: (self topEntity isOfType: FASTCSSStylesheet). - self assert: (self topEntity isOfType: FamixTHasImmediateSource). - self assert: (self topEntity isOfType: FamixTSourceAnchor). - - "Testing value of multivalued relation childrenNodes" - self assert: self topEntity childrenNodes size equals: 7. - - stack push: (stack top childrenNodes at: 1). - self assert: self topEntity sourceCode equals: ':nth-child(2) {}'. - self assert: (self topEntity isOfType: FASTCSSRuleSet). - - "Testing value of multivalued relation childrenNodes" - self assert: self topEntity childrenNodes size equals: 2. - - stack push: (stack top childrenNodes at: 1). - self assert: self topEntity sourceCode equals: ':nth-child(2)'. - self assert: (self topEntity isOfType: FASTCSSSelectors). - - "Testing value of multivalued relation childrenNodes" - self assert: self topEntity childrenNodes size equals: 1. - - stack push: (stack top childrenNodes at: 1). - self assert: self topEntity sourceCode equals: ':nth-child(2)'. - self assert: (self topEntity isOfType: FASTCSSPseudoClassSelector). - - "Testing value of multivalued relation childrenNodes" - self assert: self topEntity childrenNodes size equals: 2. - - stack push: (stack top childrenNodes at: 1). - self assert: self topEntity sourceCode equals: 'nth-child'. - self assert: (self topEntity isOfType: FASTCSSClassName). - stack pop. - - stack push: (stack top childrenNodes at: 2). - self assert: self topEntity sourceCode equals: '(2)'. - self assert: (self topEntity isOfType: FASTCSSArguments). - - "Testing value of multivalued relation childrenNodes" - self assert: self topEntity childrenNodes size equals: 1. - - stack push: (stack top childrenNodes at: 1). - self assert: self topEntity sourceCode equals: '2'. - self assert: (self topEntity isOfType: FASTCSSIntegerValue). - stack pop. - stack pop. - stack pop. - stack pop. - - stack push: (stack top childrenNodes at: 2). - self assert: self topEntity sourceCode equals: '{}'. - self assert: (self topEntity isOfType: FASTCSSBlock). - stack pop. - stack pop. - - stack push: (stack top childrenNodes at: 2). - self assert: self topEntity sourceCode equals: ':nth-last-child(-n) {}'. - self assert: (self topEntity isOfType: FASTCSSRuleSet). - - "Testing value of multivalued relation childrenNodes" - self assert: self topEntity childrenNodes size equals: 2. - - stack push: (stack top childrenNodes at: 1). - self assert: self topEntity sourceCode equals: ':nth-last-child(-n)'. - self assert: (self topEntity isOfType: FASTCSSSelectors). - - "Testing value of multivalued relation childrenNodes" - self assert: self topEntity childrenNodes size equals: 1. - - stack push: (stack top childrenNodes at: 1). - self assert: self topEntity sourceCode equals: ':nth-last-child(-n)'. - self assert: (self topEntity isOfType: FASTCSSPseudoClassSelector). - - "Testing value of multivalued relation childrenNodes" - self assert: self topEntity childrenNodes size equals: 2. - - stack push: (stack top childrenNodes at: 1). - self assert: self topEntity sourceCode equals: 'nth-last-child'. - self assert: (self topEntity isOfType: FASTCSSClassName). - stack pop. - - stack push: (stack top childrenNodes at: 2). - self assert: self topEntity sourceCode equals: '(-n)'. - self assert: (self topEntity isOfType: FASTCSSArguments). - - "Testing value of multivalued relation childrenNodes" - self assert: self topEntity childrenNodes size equals: 1. - - stack push: (stack top childrenNodes at: 1). - self assert: self topEntity sourceCode equals: '-n'. - self assert: (self topEntity isOfType: FASTCSSPlainValue). - stack pop. - stack pop. - stack pop. - stack pop. - - stack push: (stack top childrenNodes at: 2). - self assert: self topEntity sourceCode equals: '{}'. - self assert: (self topEntity isOfType: FASTCSSBlock). - stack pop. - stack pop. + "Testing value of multivalued relation childrenNodes" + self assert: self topEntity childrenNodes size equals: 2. - stack push: (stack top childrenNodes at: 3). - self assert: self topEntity sourceCode equals: ':nth-last-child(2n+1) {}'. + stack push: (stack top childrenNodes at: 1). + self assert: self topEntity sourceCode equals: 'div { + all:unset; + display:flex; + justify-content:center; +}' withPlatformLineEndings. self assert: (self topEntity isOfType: FASTCSSRuleSet). "Testing value of multivalued relation childrenNodes" self assert: self topEntity childrenNodes size equals: 2. stack push: (stack top childrenNodes at: 1). - self assert: self topEntity sourceCode equals: ':nth-last-child(2n+1)'. + self assert: self topEntity sourceCode equals: 'div'. self assert: (self topEntity isOfType: FASTCSSSelectors). "Testing value of multivalued relation childrenNodes" self assert: self topEntity childrenNodes size equals: 1. stack push: (stack top childrenNodes at: 1). - self assert: self topEntity sourceCode equals: ':nth-last-child(2n+1)'. - self assert: (self topEntity isOfType: FASTCSSPseudoClassSelector). - - "Testing value of multivalued relation childrenNodes" - self assert: self topEntity childrenNodes size equals: 2. - - stack push: (stack top childrenNodes at: 1). - self assert: self topEntity sourceCode equals: 'nth-last-child'. - self assert: (self topEntity isOfType: FASTCSSClassName). - stack pop. - - stack push: (stack top childrenNodes at: 2). - self assert: self topEntity sourceCode equals: '(2n+1)'. - self assert: (self topEntity isOfType: FASTCSSArguments). - - "Testing value of multivalued relation childrenNodes" - self assert: self topEntity childrenNodes size equals: 1. - - stack push: (stack top childrenNodes at: 1). - self assert: self topEntity sourceCode equals: '2n+1'. - self assert: (self topEntity isOfType: FASTCSSPlainValue). - stack pop. - stack pop. + self assert: self topEntity sourceCode equals: 'div'. + self assert: (self topEntity isOfType: FASTCSSTagName). stack pop. stack pop. stack push: (stack top childrenNodes at: 2). - self assert: self topEntity sourceCode equals: '{}'. + self assert: self topEntity sourceCode equals: '{ + all:unset; + display:flex; + justify-content:center; +}' withPlatformLineEndings. self assert: (self topEntity isOfType: FASTCSSBlock). - stack pop. - stack pop. - - stack push: (stack top childrenNodes at: 4). - self assert: self topEntity sourceCode equals: ':nth-child(2n + 2) {}'. - self assert: (self topEntity isOfType: FASTCSSRuleSet). - - "Testing value of multivalued relation childrenNodes" - self assert: self topEntity childrenNodes size equals: 2. - - stack push: (stack top childrenNodes at: 1). - self assert: self topEntity sourceCode equals: ':nth-child(2n + 2)'. - self assert: (self topEntity isOfType: FASTCSSSelectors). "Testing value of multivalued relation childrenNodes" - self assert: self topEntity childrenNodes size equals: 1. + self assert: self topEntity childrenNodes size equals: 3. stack push: (stack top childrenNodes at: 1). - self assert: self topEntity sourceCode equals: ':nth-child(2n + 2)'. - self assert: (self topEntity isOfType: FASTCSSPseudoClassSelector). + self assert: self topEntity sourceCode equals: 'all:unset;'. + self assert: (self topEntity isOfType: FASTCSSDeclaration). "Testing value of multivalued relation childrenNodes" self assert: self topEntity childrenNodes size equals: 2. stack push: (stack top childrenNodes at: 1). - self assert: self topEntity sourceCode equals: 'nth-child'. - self assert: (self topEntity isOfType: FASTCSSClassName). + self assert: self topEntity sourceCode equals: 'all'. + self assert: (self topEntity isOfType: FASTCSSPropertyName). stack pop. stack push: (stack top childrenNodes at: 2). - self assert: self topEntity sourceCode equals: '(2n + 2)'. - self assert: (self topEntity isOfType: FASTCSSArguments). - - "Testing value of multivalued relation childrenNodes" - self assert: self topEntity childrenNodes size equals: 1. - - stack push: (stack top childrenNodes at: 1). - self assert: self topEntity sourceCode equals: '2n + 2'. - self assert: (self topEntity isOfType: FASTCSSPlainValue). - stack pop. + self assert: self topEntity sourceCode equals: 'unset'. + self assert: (self topEntity isOfType: FASTCSSPlainValue). stack pop. stack pop. - stack pop. - - stack push: (stack top childrenNodes at: 2). - self assert: self topEntity sourceCode equals: '{}'. - self assert: (self topEntity isOfType: FASTCSSBlock). - stack pop. - stack pop. - - stack push: (stack top childrenNodes at: 5). - self assert: self topEntity sourceCode equals: ':nth-last-child(-n) {}'. - self assert: (self topEntity isOfType: FASTCSSRuleSet). - - "Testing value of multivalued relation childrenNodes" - self assert: self topEntity childrenNodes size equals: 2. - - stack push: (stack top childrenNodes at: 1). - self assert: self topEntity sourceCode equals: ':nth-last-child(-n)'. - self assert: (self topEntity isOfType: FASTCSSSelectors). - - "Testing value of multivalued relation childrenNodes" - self assert: self topEntity childrenNodes size equals: 1. - stack push: (stack top childrenNodes at: 1). - self assert: self topEntity sourceCode equals: ':nth-last-child(-n)'. - self assert: (self topEntity isOfType: FASTCSSPseudoClassSelector). + stack push: (stack top childrenNodes at: 2). + self assert: self topEntity sourceCode equals: 'display:flex;'. + self assert: (self topEntity isOfType: FASTCSSDeclaration). "Testing value of multivalued relation childrenNodes" self assert: self topEntity childrenNodes size equals: 2. stack push: (stack top childrenNodes at: 1). - self assert: self topEntity sourceCode equals: 'nth-last-child'. - self assert: (self topEntity isOfType: FASTCSSClassName). + self assert: self topEntity sourceCode equals: 'display'. + self assert: (self topEntity isOfType: FASTCSSPropertyName). stack pop. stack push: (stack top childrenNodes at: 2). - self assert: self topEntity sourceCode equals: '(-n)'. - self assert: (self topEntity isOfType: FASTCSSArguments). - - "Testing value of multivalued relation childrenNodes" - self assert: self topEntity childrenNodes size equals: 1. - - stack push: (stack top childrenNodes at: 1). - self assert: self topEntity sourceCode equals: '-n'. - self assert: (self topEntity isOfType: FASTCSSPlainValue). - stack pop. + self assert: self topEntity sourceCode equals: 'flex'. + self assert: (self topEntity isOfType: FASTCSSPlainValue). stack pop. stack pop. - stack pop. - - stack push: (stack top childrenNodes at: 2). - self assert: self topEntity sourceCode equals: '{}'. - self assert: (self topEntity isOfType: FASTCSSBlock). - stack pop. - stack pop. - - stack push: (stack top childrenNodes at: 6). - self assert: self topEntity sourceCode equals: ':nth-child(2n of a.external) {}'. - self assert: (self topEntity isOfType: FASTCSSRuleSet). - - "Testing value of multivalued relation childrenNodes" - self assert: self topEntity childrenNodes size equals: 2. - - stack push: (stack top childrenNodes at: 1). - self assert: self topEntity sourceCode equals: ':nth-child(2n of a.external)'. - self assert: (self topEntity isOfType: FASTCSSSelectors). - - "Testing value of multivalued relation childrenNodes" - self assert: self topEntity childrenNodes size equals: 1. - stack push: (stack top childrenNodes at: 1). - self assert: self topEntity sourceCode equals: ':nth-child(2n of a.external)'. - self assert: (self topEntity isOfType: FASTCSSPseudoClassSelector). + stack push: (stack top childrenNodes at: 3). + self assert: self topEntity sourceCode equals: 'justify-content:center;'. + self assert: (self topEntity isOfType: FASTCSSDeclaration). "Testing value of multivalued relation childrenNodes" self assert: self topEntity childrenNodes size equals: 2. stack push: (stack top childrenNodes at: 1). - self assert: self topEntity sourceCode equals: 'nth-child'. - self assert: (self topEntity isOfType: FASTCSSClassName). + self assert: self topEntity sourceCode equals: 'justify-content'. + self assert: (self topEntity isOfType: FASTCSSPropertyName). stack pop. stack push: (stack top childrenNodes at: 2). - self assert: self topEntity sourceCode equals: '(2n of a.external)'. - self assert: (self topEntity isOfType: FASTCSSArguments). - - "Testing value of multivalued relation childrenNodes" - self assert: self topEntity childrenNodes size equals: 2. - - stack push: (stack top childrenNodes at: 1). - self assert: self topEntity sourceCode equals: '2n '. - self assert: (self topEntity isOfType: FASTCSSPlainValue). - stack pop. - - stack push: (stack top childrenNodes at: 2). - self assert: self topEntity sourceCode equals: 'a.external'. - self assert: (self topEntity isOfType: FASTCSSClassSelector). - - "Testing value of multivalued relation childrenNodes" - self assert: self topEntity childrenNodes size equals: 2. - - stack push: (stack top childrenNodes at: 1). - self assert: self topEntity sourceCode equals: 'a'. - self assert: (self topEntity isOfType: FASTCSSTagName). - stack pop. - - stack push: (stack top childrenNodes at: 2). - self assert: self topEntity sourceCode equals: 'external'. - self assert: (self topEntity isOfType: FASTCSSClassName). - - "Testing value of multivalued relation childrenNodes" - self assert: self topEntity childrenNodes size equals: 1. - - stack push: (stack top childrenNodes at: 1). - self assert: self topEntity sourceCode equals: 'external'. - self assert: (self topEntity isOfType: FASTCSSIdentifier). - stack pop. - stack pop. - stack pop. + self assert: self topEntity sourceCode equals: 'center'. + self assert: (self topEntity isOfType: FASTCSSPlainValue). stack pop. stack pop. stack pop. - - stack push: (stack top childrenNodes at: 2). - self assert: self topEntity sourceCode equals: '{}'. - self assert: (self topEntity isOfType: FASTCSSBlock). - stack pop. stack pop. - stack push: (stack top childrenNodes at: 7). - self assert: self topEntity sourceCode equals: ''. + stack push: (stack top childrenNodes at: 2). + self assert: self topEntity sourceCode equals: ';'. self assert: (self topEntity isOfType: FASTCSSERROR). self assert: (self topEntity isOfType: FamixTHasImmediateSource). self assert: (self topEntity isOfType: FamixTSourceAnchor). stack pop. - self assert: self topEntity source equals: ':nth-child(2) {} -:nth-last-child(-n) {} -:nth-last-child(2n+1) {} -:nth-child(2n + 2) {} -:nth-last-child(-n) {} -:nth-child(2n of a.external) {};' withPlatformLineEndings + self assert: self topEntity source equals: 'div { + all:unset; + display:flex; + justify-content:center; +};' withPlatformLineEndings ] { #category : 'tests' } @@ -4767,7 +4865,7 @@ FASTCSSImporterTest >> testGeneratedNumbers [ stack pop. stack push: (stack top childrenNodes at: 2). - self assert: self topEntity sourceCode equals: ''. + self assert: self topEntity sourceCode equals: ';'. self assert: (self topEntity isOfType: FASTCSSERROR). self assert: (self topEntity isOfType: FamixTHasImmediateSource). self assert: (self topEntity isOfType: FamixTSourceAnchor). @@ -5021,7 +5119,7 @@ FASTCSSImporterTest >> testGeneratedOtherAtstatements [ stack pop. stack push: (stack top childrenNodes at: 2). - self assert: self topEntity sourceCode equals: ''. + self assert: self topEntity sourceCode equals: ';'. self assert: (self topEntity isOfType: FASTCSSERROR). self assert: (self topEntity isOfType: FamixTHasImmediateSource). self assert: (self topEntity isOfType: FamixTSourceAnchor). @@ -5400,7 +5498,7 @@ FASTCSSImporterTest >> testGeneratedPostCSS [ stack pop. stack push: (stack top childrenNodes at: 4). - self assert: self topEntity sourceCode equals: ''. + self assert: self topEntity sourceCode equals: ';'. self assert: (self topEntity isOfType: FASTCSSERROR). self assert: (self topEntity isOfType: FamixTHasImmediateSource). self assert: (self topEntity isOfType: FamixTSourceAnchor). @@ -6397,7 +6495,7 @@ a:not([href]) {} stack pop. stack push: (stack top childrenNodes at: 15). - self assert: self topEntity sourceCode equals: ''. + self assert: self topEntity sourceCode equals: ';'. self assert: (self topEntity isOfType: FASTCSSERROR). self assert: (self topEntity isOfType: FamixTHasImmediateSource). self assert: (self topEntity isOfType: FamixTSourceAnchor). @@ -6483,7 +6581,7 @@ FASTCSSImporterTest >> testGeneratedPseudoelementSelectors [ stack pop. stack push: (stack top childrenNodes at: 2). - self assert: self topEntity sourceCode equals: ''. + self assert: self topEntity sourceCode equals: ';'. self assert: (self topEntity isOfType: FASTCSSERROR). self assert: (self topEntity isOfType: FamixTHasImmediateSource). self assert: (self topEntity isOfType: FamixTSourceAnchor). @@ -6592,7 +6690,7 @@ FASTCSSImporterTest >> testGeneratedRuleSets [ stack pop. stack push: (stack top childrenNodes at: 2). - self assert: self topEntity sourceCode equals: ''. + self assert: self topEntity sourceCode equals: ';'. self assert: (self topEntity isOfType: FASTCSSERROR). self assert: (self topEntity isOfType: FamixTHasImmediateSource). self assert: (self topEntity isOfType: FamixTSourceAnchor). @@ -6871,7 +6969,7 @@ FASTCSSImporterTest >> testGeneratedScopeStatements [ stack pop. stack push: (stack top childrenNodes at: 3). - self assert: self topEntity sourceCode equals: ''. + self assert: self topEntity sourceCode equals: ';'. self assert: (self topEntity isOfType: FASTCSSERROR). self assert: (self topEntity isOfType: FamixTHasImmediateSource). self assert: (self topEntity isOfType: FamixTSourceAnchor). @@ -7115,7 +7213,7 @@ FASTCSSImporterTest >> testGeneratedSiblingSelectors [ stack pop. stack push: (stack top childrenNodes at: 3). - self assert: self topEntity sourceCode equals: ''. + self assert: self topEntity sourceCode equals: ';'. self assert: (self topEntity isOfType: FASTCSSERROR). self assert: (self topEntity isOfType: FamixTHasImmediateSource). self assert: (self topEntity isOfType: FamixTSourceAnchor). @@ -7124,88 +7222,6 @@ FASTCSSImporterTest >> testGeneratedSiblingSelectors [ .e.f + .g.h {};' withPlatformLineEndings ] -{ #category : 'tests' } -FASTCSSImporterTest >> testGeneratedSlottedPseudoElement [ - - "Generated as regression test by TSFASTImporterTestGenerator>>#generateTestNamed:fromCode:protocol: - Regenerate executing: self regenerateTest: #testGeneratedSlottedPseudoElement " - - self parse: '::slotted(button) {};'. - - self assert: (fast allWithType: FASTCSSArguments) size equals: 1. - self assert: (fast allWithType: FASTCSSBlock) size equals: 1. - self assert: (fast allWithType: FASTCSSERROR) size equals: 1. - self assert: (fast allWithType: FASTCSSPseudoElementSelector) size equals: 1. - self assert: (fast allWithType: FASTCSSRuleSet) size equals: 1. - self assert: (fast allWithType: FASTCSSSelectors) size equals: 1. - self assert: (fast allWithType: FASTCSSStylesheet) size equals: 1. - self assert: (fast allWithType: FASTCSSTagName) size equals: 2. - - stack push: fast rootEntities anyOne. - self assert: self topEntity sourceCode equals: '::slotted(button) {};'. - self assert: (self topEntity isOfType: FASTCSSStylesheet). - self assert: (self topEntity isOfType: FamixTHasImmediateSource). - self assert: (self topEntity isOfType: FamixTSourceAnchor). - - "Testing value of multivalued relation childrenNodes" - self assert: self topEntity childrenNodes size equals: 2. - - stack push: (stack top childrenNodes at: 1). - self assert: self topEntity sourceCode equals: '::slotted(button) {}'. - self assert: (self topEntity isOfType: FASTCSSRuleSet). - - "Testing value of multivalued relation childrenNodes" - self assert: self topEntity childrenNodes size equals: 2. - - stack push: (stack top childrenNodes at: 1). - self assert: self topEntity sourceCode equals: '::slotted(button)'. - self assert: (self topEntity isOfType: FASTCSSSelectors). - - "Testing value of multivalued relation childrenNodes" - self assert: self topEntity childrenNodes size equals: 1. - - stack push: (stack top childrenNodes at: 1). - self assert: self topEntity sourceCode equals: '::slotted(button)'. - self assert: (self topEntity isOfType: FASTCSSPseudoElementSelector). - - "Testing value of multivalued relation childrenNodes" - self assert: self topEntity childrenNodes size equals: 2. - - stack push: (stack top childrenNodes at: 1). - self assert: self topEntity sourceCode equals: 'slotted'. - self assert: (self topEntity isOfType: FASTCSSTagName). - stack pop. - - stack push: (stack top childrenNodes at: 2). - self assert: self topEntity sourceCode equals: '(button)'. - self assert: (self topEntity isOfType: FASTCSSArguments). - - "Testing value of multivalued relation childrenNodes" - self assert: self topEntity childrenNodes size equals: 1. - - stack push: (stack top childrenNodes at: 1). - self assert: self topEntity sourceCode equals: 'button'. - self assert: (self topEntity isOfType: FASTCSSTagName). - stack pop. - stack pop. - stack pop. - stack pop. - - stack push: (stack top childrenNodes at: 2). - self assert: self topEntity sourceCode equals: '{}'. - self assert: (self topEntity isOfType: FASTCSSBlock). - stack pop. - stack pop. - - stack push: (stack top childrenNodes at: 2). - self assert: self topEntity sourceCode equals: ''. - self assert: (self topEntity isOfType: FASTCSSERROR). - self assert: (self topEntity isOfType: FamixTHasImmediateSource). - self assert: (self topEntity isOfType: FamixTSourceAnchor). - stack pop. - self assert: self topEntity source equals: '::slotted(button) {};' -] - { #category : 'tests' } FASTCSSImporterTest >> testGeneratedSpacesAfterColonsInPropertyDeclarations [ @@ -7311,7 +7327,7 @@ FASTCSSImporterTest >> testGeneratedSpacesAfterColonsInPropertyDeclarations [ stack pop. stack push: (stack top childrenNodes at: 2). - self assert: self topEntity sourceCode equals: ''. + self assert: self topEntity sourceCode equals: ';'. self assert: (self topEntity isOfType: FASTCSSERROR). self assert: (self topEntity isOfType: FamixTHasImmediateSource). self assert: (self topEntity isOfType: FamixTSourceAnchor). @@ -7447,7 +7463,7 @@ FASTCSSImporterTest >> testGeneratedStrings [ stack pop. stack push: (stack top childrenNodes at: 2). - self assert: self topEntity sourceCode equals: ''. + self assert: self topEntity sourceCode equals: ';'. self assert: (self topEntity isOfType: FASTCSSERROR). self assert: (self topEntity isOfType: FamixTHasImmediateSource). self assert: (self topEntity isOfType: FamixTSourceAnchor). @@ -7790,7 +7806,7 @@ FASTCSSImporterTest >> testGeneratedSupportsStatements [ stack pop. stack push: (stack top childrenNodes at: 5). - self assert: self topEntity sourceCode equals: ''. + self assert: self topEntity sourceCode equals: ';'. self assert: (self topEntity isOfType: FASTCSSERROR). self assert: (self topEntity isOfType: FamixTHasImmediateSource). self assert: (self topEntity isOfType: FamixTSourceAnchor). @@ -8001,7 +8017,7 @@ FASTCSSImporterTest >> testGeneratedTheNotSelector [ stack pop. stack push: (stack top childrenNodes at: 3). - self assert: self topEntity sourceCode equals: ''. + self assert: self topEntity sourceCode equals: ';'. self assert: (self topEntity isOfType: FASTCSSERROR). self assert: (self topEntity isOfType: FamixTHasImmediateSource). self assert: (self topEntity isOfType: FamixTSourceAnchor). @@ -8109,7 +8125,7 @@ h1, h2, h3, h4 {};' withPlatformLineEndings. stack pop. stack push: (stack top childrenNodes at: 3). - self assert: self topEntity sourceCode equals: ''. + self assert: self topEntity sourceCode equals: ';'. self assert: (self topEntity isOfType: FASTCSSERROR). self assert: (self topEntity isOfType: FamixTHasImmediateSource). self assert: (self topEntity isOfType: FamixTSourceAnchor). @@ -8201,7 +8217,7 @@ FASTCSSImporterTest >> testGeneratedURLs [ stack pop. stack push: (stack top childrenNodes at: 2). - self assert: self topEntity sourceCode equals: ''. + self assert: self topEntity sourceCode equals: ';'. self assert: (self topEntity isOfType: FASTCSSERROR). self assert: (self topEntity isOfType: FamixTHasImmediateSource). self assert: (self topEntity isOfType: FamixTSourceAnchor). @@ -8262,7 +8278,7 @@ FASTCSSImporterTest >> testGeneratedUniversalSelectors [ stack pop. stack push: (stack top childrenNodes at: 2). - self assert: self topEntity sourceCode equals: ''. + self assert: self topEntity sourceCode equals: ';'. self assert: (self topEntity isOfType: FASTCSSERROR). self assert: (self topEntity isOfType: FamixTHasImmediateSource). self assert: (self topEntity isOfType: FamixTSourceAnchor). @@ -8272,5 +8288,5 @@ FASTCSSImporterTest >> testGeneratedUniversalSelectors [ { #category : 'as yet unclassified' } FASTCSSImporterTest >> topEntity [ - ^ stack top + ^ stack top ] From 16a86ff1f5f165c1b1c1f3d5a3ed8c4839714776 Mon Sep 17 00:00:00 2001 From: alesshosry Date: Wed, 30 Sep 2026 15:22:02 +0200 Subject: [PATCH 3/3] Fixing the importer to be used instead of parser --- src/FAST-CSS-Tools/FASTCSSImporter.class.st | 139 +++++++++++++++++++ src/FAST-CSS-Tools/FASTCSSParser.class.st | 146 -------------------- 2 files changed, 139 insertions(+), 146 deletions(-) delete mode 100644 src/FAST-CSS-Tools/FASTCSSParser.class.st diff --git a/src/FAST-CSS-Tools/FASTCSSImporter.class.st b/src/FAST-CSS-Tools/FASTCSSImporter.class.st index b98cc2d..6707959 100644 --- a/src/FAST-CSS-Tools/FASTCSSImporter.class.st +++ b/src/FAST-CSS-Tools/FASTCSSImporter.class.st @@ -1,12 +1,151 @@ Class { #name : 'FASTCSSImporter', #superclass : 'TSFASTAbstractImporter', + #instVars : [ + 'representations' + ], #category : 'FAST-CSS-Tools', #package : 'FAST-CSS-Tools' } +{ #category : 'as yet unclassified' } +FASTCSSImporter >> deleteTreeSitterParser [ + + self tsParser delete +] + +{ #category : 'as yet unclassified' } +FASTCSSImporter >> editTree: aFastTree using: inputEdit [ + + | treeRepresentation | + "1- create a parser" + self initialiseTreeSitterParser. + + "2- find treeSitter tree in representation collection" + treeRepresentation := (self representations select: [ :each | + each fastTree mooseID = aFastTree mooseID ]) + first. + + "3- edit treeSitterTree using inputEdits" + self tsParser + editTree: treeRepresentation treeSitterTree + usingInputEdit: inputEdit. + + "4- delete the TreeSitter Parser" + self deleteTreeSitterParser +] + +{ #category : 'as yet unclassified' } +FASTCSSImporter >> importToFAST: tsTree usingSourceCode: aString [ + + | tsLanguage importer | + + "needs cleaning" + + tsLanguage := TSLanguage css. + importer := TSFASTImporter new. + importer tsLanguage: tsLanguage. + importer languageName: 'CSS'. + importer originString: aString. + + ^ importer import: tsTree . +] + +{ #category : 'as yet unclassified' } +FASTCSSImporter >> initialiseTreeSitterParser [ + + self tsParser: TSParser new. + self tsParser language: TSLanguage css. +] + +{ #category : 'initialization' } +FASTCSSImporter >> initialize [ + + super initialize. + + self representations: OrderedCollection new. +] + +{ #category : 'parsing' } +FASTCSSImporter >> parse: aString [ + + |tsTree fastTree| + + "1- create a parser" + self initialiseTreeSitterParser. + + "2- parseString" + tsTree := self tsParser parseString: aString. + + "3- Convert it to FAST" + fastTree := self importToFAST: tsTree rootNode usingSourceCode: aString. + + "4- store the TSTree + FAST tree in the treeRepresantion object and store it in collection" + self representations add: ( TreeRepresentation new + treeSitterTree:tsTree; + fastTree: fastTree). + + "5- delete the TreeSitter Parser" + self deleteTreeSitterParser. + + "6- return fastTree" + "^ self getASTFromString: aString " + ^ fastTree +] + +{ #category : 'parsing' } +FASTCSSImporter >> parse: aString usingOldTree: aFastTree [ + + | treeRepresentation newFastTree newTreeSitterTree | + + "1- create a parser" + self initialiseTreeSitterParser. + + "2- find treeSitter tree in representation collection" + treeRepresentation := (self representations select: [:each | each fastTree mooseID = aFastTree mooseID]) first. + + "3- parseString using treeSitter tree" + newTreeSitterTree := self tsParser parseString: aString usingTree: treeRepresentation treeSitterTree. + + "4- convert treeSitter tree to fast" + newFastTree := self importToFAST: newTreeSitterTree rootNode usingSourceCode: aString. + + "5- update the representation collection: fill both new trees" + treeRepresentation treeSitterTree: newTreeSitterTree; fastTree: newFastTree. + + "6- delete the TreeSitter Parser" + self deleteTreeSitterParser. + + "7- return fastTree" + ^ newFastTree. +] + +{ #category : 'accessing' } +FASTCSSImporter >> representations [ + + ^ representations +] + +{ #category : 'accessing' } +FASTCSSImporter >> representations: anObject [ + + representations := anObject +] + { #category : 'as yet unclassified' } FASTCSSImporter >> tsLanguage [ ^ TSLanguage css ] + +{ #category : 'accessing' } +FASTCSSImporter >> tsParser [ + + ^ tsParser +] + +{ #category : 'accessing' } +FASTCSSImporter >> tsParser: anObject [ + + tsParser := anObject +] diff --git a/src/FAST-CSS-Tools/FASTCSSParser.class.st b/src/FAST-CSS-Tools/FASTCSSParser.class.st deleted file mode 100644 index 72ab84f..0000000 --- a/src/FAST-CSS-Tools/FASTCSSParser.class.st +++ /dev/null @@ -1,146 +0,0 @@ -Class { - #name : 'FASTCSSParser', - #superclass : 'Object', - #instVars : [ - 'tsParser', - 'representations' - ], - #category : 'FAST-CSS-Tools', - #package : 'FAST-CSS-Tools' -} - -{ #category : 'as yet unclassified' } -FASTCSSParser >> deleteTreeSitterParser [ - - self tsParser delete -] - -{ #category : 'as yet unclassified' } -FASTCSSParser >> editTree: aFastTree using: inputEdit [ - - | treeRepresentation | - "1- create a parser" - self initialiseTreeSitterParser. - - "2- find treeSitter tree in representation collection" - treeRepresentation := (self representations select: [ :each | - each fastTree mooseID = aFastTree mooseID ]) - first. - - "3- edit treeSitterTree using inputEdits" - self tsParser - editTree: treeRepresentation treeSitterTree - usingInputEdit: inputEdit. - - "4- delete the TreeSitter Parser" - self deleteTreeSitterParser -] - -{ #category : 'as yet unclassified' } -FASTCSSParser >> importToFAST: tsTree usingSourceCode: aString [ - - | tsLanguage importer | - - "needs cleaning" - - tsLanguage := TSLanguage css. - importer := TSFASTImporter new. - importer tsLanguage: tsLanguage. - importer languageName: 'CSS'. - importer originString: aString. - - ^ importer import: tsTree . -] - -{ #category : 'as yet unclassified' } -FASTCSSParser >> initialiseTreeSitterParser [ - - self tsParser: TSParser new. - self tsParser language: TSLanguage css. -] - -{ #category : 'initialization' } -FASTCSSParser >> initialize [ - - super initialize. - - self representations: OrderedCollection new. -] - -{ #category : 'parsing' } -FASTCSSParser >> parse: aString [ - - |tsTree fastTree| - - "1- create a parser" - self initialiseTreeSitterParser. - - "2- parseString" - tsTree := self tsParser parseString: aString. - - "3- Convert it to FAST" - fastTree := self importToFAST: tsTree rootNode usingSourceCode: aString. - - "4- store the TSTree + FAST tree in the treeRepresantion object and store it in collection" - self representations add: ( TreeRepresentation new - treeSitterTree:tsTree; - fastTree: fastTree). - - "5- delete the TreeSitter Parser" - self deleteTreeSitterParser. - - "6- return fastTree" - "^ self getASTFromString: aString " - ^ fastTree -] - -{ #category : 'parsing' } -FASTCSSParser >> parse: aString usingOldTree: aFastTree [ - - | treeRepresentation newFastTree newTreeSitterTree | - - "1- create a parser" - self initialiseTreeSitterParser. - - "2- find treeSitter tree in representation collection" - treeRepresentation := (self representations select: [:each | each fastTree mooseID = aFastTree mooseID]) first. - - "3- parseString using treeSitter tree" - newTreeSitterTree := self tsParser parseString: aString usingTree: treeRepresentation treeSitterTree. - - "4- convert treeSitter tree to fast" - newFastTree := self importToFAST: newTreeSitterTree rootNode usingSourceCode: aString. - - "5- update the representation collection: fill both new trees" - treeRepresentation treeSitterTree: newTreeSitterTree; fastTree: newFastTree. - - "6- delete the TreeSitter Parser" - self deleteTreeSitterParser. - - "7- return fastTree" - ^ newFastTree. -] - -{ #category : 'accessing' } -FASTCSSParser >> representations [ - - ^ representations -] - -{ #category : 'accessing' } -FASTCSSParser >> representations: anObject [ - - representations := anObject -] - -{ #category : 'accessing' } -FASTCSSParser >> tsParser [ - - ^ tsParser -] - -{ #category : 'accessing' } -FASTCSSParser >> tsParser: anObject [ - - tsParser := anObject -]