Changeset 980


Ignore:
Timestamp:
08/28/10 14:22:32 (18 months ago)
Author:
kasper
Message:

Ticket #382: Improved testing

Location:
AnalyzerBeans/trunk/src
Files:
1 added
5 edited

Legend:

Unmodified
Added
Removed
  • AnalyzerBeans/trunk/src/main/java/org/eobjects/analyzer/job/JaxbJobFactory.java

    r978 r980  
    307307                        AbstractBeanJobBuilder<? extends BeanDescriptor<?>, ?, ?> builder, 
    308308                        ConfiguredPropertiesType configuredPropertiesType) { 
    309                 List<Property> properties = configuredPropertiesType.getProperty(); 
    310                 BeanDescriptor<?> descriptor = builder.getDescriptor(); 
    311                 for (Property property : properties) { 
    312                         String name = property.getName(); 
    313                         String value = property.getValue(); 
    314  
    315                         ConfiguredPropertyDescriptor configuredProperty = descriptor 
    316                                         .getConfiguredProperty(name); 
    317  
    318                         // TODO: Convert value according to configuredProperty's type 
    319                         builder.setConfiguredProperty(configuredProperty, value); 
     309                if (configuredPropertiesType != null) { 
     310                        List<Property> properties = configuredPropertiesType.getProperty(); 
     311                        BeanDescriptor<?> descriptor = builder.getDescriptor(); 
     312                        for (Property property : properties) { 
     313                                String name = property.getName(); 
     314                                String value = property.getValue(); 
     315                                 
     316                                ConfiguredPropertyDescriptor configuredProperty = descriptor 
     317                                .getConfiguredProperty(name); 
     318                                 
     319                                // TODO: Convert value according to configuredProperty's type 
     320                                builder.setConfiguredProperty(configuredProperty, value); 
     321                        } 
    320322                } 
    321323        } 
  • AnalyzerBeans/trunk/src/main/java/org/eobjects/analyzer/result/Crosstab.java

    r961 r980  
    99import java.util.List; 
    1010import java.util.Map; 
     11import java.util.Map.Entry; 
     12import java.util.Set; 
    1113 
    1214import org.apache.commons.lang.ArrayUtils; 
     
    2224        private transient Map<String, ResultProducer> transientResultProducers; 
    2325        private Class<E> valueClass; 
    24          
     26 
    2527        public Crosstab(Class<E> valueClass, CrosstabDimension... dimensions) { 
    2628                this.valueClass = valueClass; 
     
    196198                return resultProducer; 
    197199        } 
     200 
     201        @Override 
     202        public String toString() { 
     203                StringBuilder sb = new StringBuilder("Crosstab:"); 
     204                 
     205                Set<Entry<String, E>> entrySet = values.entrySet(); 
     206                for (Entry<String, E> entry : entrySet) { 
     207                        sb.append('\n'); 
     208                        sb.append(entry.getKey().replaceAll("\\^", ",")); 
     209                        sb.append(": "); 
     210                        sb.append(entry.getValue()); 
     211                } 
     212                 
     213                return sb.toString(); 
     214        } 
    198215} 
  • AnalyzerBeans/trunk/src/main/java/org/eobjects/analyzer/result/CrosstabResult.java

    r957 r980  
    2323                return crosstab; 
    2424        } 
     25         
     26        @Override 
     27        public String toString() { 
     28                return crosstab.toString(); 
     29        } 
    2530} 
  • AnalyzerBeans/trunk/src/test/java/org/eobjects/analyzer/job/JaxbJobFactoryTest.java

    r978 r980  
    22 
    33import java.io.File; 
     4import java.util.Arrays; 
     5import java.util.List; 
    46 
     7import org.eobjects.analyzer.data.MetaModelInputColumn; 
     8import org.eobjects.analyzer.job.runner.AnalysisRunnerImpl; 
     9import org.eobjects.analyzer.result.AnalyzerResult; 
     10import org.eobjects.analyzer.result.CrosstabResult; 
    511import org.eobjects.analyzer.test.TestHelper; 
    612 
     
    4450                JaxbJobFactory factory = new JaxbJobFactory(configuration); 
    4551                try { 
    46                         factory.create(new File("src/test/resources/example-job-valid.xml")); 
     52                        factory.create(new File( 
     53                                        "src/test/resources/example-job-missing-descriptor.xml")); 
    4754                        fail("Exception expected"); 
    4855                } catch (IllegalStateException e) { 
     
    5158                } 
    5259        } 
     60 
     61        public void testValidJob() throws Exception { 
     62                AnalyzerBeansConfiguration configuration = TestHelper 
     63                                .createAnalyzerBeansConfiguration(TestHelper 
     64                                                .createSampleDatabaseDatastore("my database")); 
     65                JaxbJobFactory factory = new JaxbJobFactory(configuration); 
     66                AnalysisJobBuilder builder = factory.create(new File( 
     67                                "src/test/resources/example-job-valid.xml")); 
     68                assertTrue(builder.isConfigured()); 
     69 
     70                List<MetaModelInputColumn> sourceColumns = builder.getSourceColumns(); 
     71                assertEquals(3, sourceColumns.size()); 
     72                assertEquals( 
     73                                "MetaModelInputColumn[JdbcColumn[name=FIRSTNAME,columnNumber=2,type=VARCHAR,nullable=false,indexed=false,nativeType=VARCHAR,columnSize=50]]", 
     74                                sourceColumns.get(0).toString()); 
     75                assertEquals( 
     76                                "MetaModelInputColumn[JdbcColumn[name=LASTNAME,columnNumber=1,type=VARCHAR,nullable=false,indexed=false,nativeType=VARCHAR,columnSize=50]]", 
     77                                sourceColumns.get(1).toString()); 
     78                assertEquals( 
     79                                "MetaModelInputColumn[JdbcColumn[name=EMAIL,columnNumber=4,type=VARCHAR,nullable=false,indexed=false,nativeType=VARCHAR,columnSize=100]]", 
     80                                sourceColumns.get(2).toString()); 
     81 
     82                assertEquals(1, builder.getTransformerJobBuilders().size()); 
     83                assertEquals( 
     84                                "[TransformedInputColumn[id=trans-1,name=username,type=STRING], " 
     85                                                + "TransformedInputColumn[id=trans-2,name=domain,type=STRING]]", 
     86                                builder.getTransformerJobBuilders().get(0).getOutputColumns() 
     87                                                .toString()); 
     88                assertEquals( 
     89                                "[TransformedInputColumn[id=trans-1,name=username,type=STRING], " 
     90                                                + "TransformedInputColumn[id=trans-2,name=domain,type=STRING], " 
     91                                                + "MetaModelInputColumn[JdbcColumn[name=FIRSTNAME,columnNumber=2,type=VARCHAR,nullable=false,indexed=false,nativeType=VARCHAR,columnSize=50]], " 
     92                                                + "MetaModelInputColumn[JdbcColumn[name=LASTNAME,columnNumber=1,type=VARCHAR,nullable=false,indexed=false,nativeType=VARCHAR,columnSize=50]]]", 
     93                                Arrays.toString(builder.getAnalyzerJobBuilders().get(0) 
     94                                                .toAnalyzerJob().getInput())); 
     95 
     96                List<AnalyzerResult> results = new AnalysisRunnerImpl(configuration) 
     97                                .run(builder.toAnalysisJob()).getResults(); 
     98                assertEquals(1, results.size()); 
     99                CrosstabResult crosstabResult = (CrosstabResult) results.get(0); 
     100                assertEquals("Crosstab:|" + "domain,Lowercase chars: 95%|" 
     101                                + "domain,Uppercase chars: 0%|" + "domain,Avg white spaces: 0|" 
     102                                + "username,Max chars: 10|" + "FIRSTNAME,Word count: 24|" 
     103                                + "domain,Word count: 23|" + "username,Max white spaces: 0|" 
     104                                + "FIRSTNAME,Max words: 2|" + "LASTNAME,Min words: 1|" 
     105                                + "FIRSTNAME,Max white spaces: 1|" 
     106                                + "username,Char count: 172|" + "username,Avg chars: 7,48|" 
     107                                + "LASTNAME,Word count: 23|" + "username,Min white spaces: 0|" 
     108                                + "LASTNAME,Max white spaces: 0|" + "LASTNAME,Char count: 147|" 
     109                                + "FIRSTNAME,Avg chars: 5,39|" + "domain,Min white spaces: 0|" 
     110                                + "domain,Max chars: 20|" + "LASTNAME,Avg chars: 6,39|" 
     111                                + "username,Uppercase chars: 0%|" 
     112                                + "username,Lowercase chars: 100%|" + "LASTNAME,Max words: 1|" 
     113                                + "LASTNAME,Avg white spaces: 0|" + "LASTNAME,Min chars: 3|" 
     114                                + "domain,Min chars: 20|" + "FIRSTNAME,Min white spaces: 0|" 
     115                                + "username,Avg white spaces: 0|" 
     116                                + "FIRSTNAME,Char count: 124|" 
     117                                + "LASTNAME,Min white spaces: 0|" + "domain,Avg chars: 20|" 
     118                                + "FIRSTNAME,Non-letter chars: 0%|" + "domain,Max words: 1|" 
     119                                + "FIRSTNAME,Uppercase chars: 19%|" + "username,Max words: 1|" 
     120                                + "FIRSTNAME,Min words: 1|" + "username,Min chars: 5|" 
     121                                + "LASTNAME,Lowercase chars: 84%|" + "username,Min words: 1|" 
     122                                + "FIRSTNAME,Max chars: 8|" + "domain,Min words: 1|" 
     123                                + "FIRSTNAME,Avg white spaces: 0,04|" 
     124                                + "username,Word count: 23|" + "LASTNAME,Uppercase chars: 15%|" 
     125                                + "LASTNAME,Non-letter chars: 0%|" + "domain,Char count: 460|" 
     126                                + "username,Non-letter chars: 0%|" + "FIRSTNAME,Min chars: 3|" 
     127                                + "domain,Non-letter chars: 5%|" 
     128                                + "domain,Max white spaces: 0|" 
     129                                + "FIRSTNAME,Lowercase chars: 79%|" + "LASTNAME,Max chars: 9", 
     130                                crosstabResult.toString().replaceAll("\n", "|")); 
     131        } 
    53132} 
  • AnalyzerBeans/trunk/src/test/resources/example-job-valid.xml

    r978 r980  
    99                <data-context ref="my database" /> 
    1010                <columns> 
    11                         <column id="col1" path="PUBLIC.EMPLOYEES.EMPLOYEENUMBER" /> 
    12                         <column id="col2" path="PUBLIC.EMPLOYEES.FIRSTNAME" /> 
    13                         <column id="col3" path="PUBLIC.EMPLOYEES.LASTNAME" /> 
     11                        <column id="col_fn" path="PUBLIC.EMPLOYEES.FIRSTNAME" /> 
     12                        <column id="col_ln" path="PUBLIC.EMPLOYEES.LASTNAME" /> 
     13                        <column id="col_email" path="PUBLIC.EMPLOYEES.EMAIL" /> 
    1414                </columns> 
    1515        </source> 
     
    1717        <transformation> 
    1818                <transformer> 
    19                         <descriptor ref="tokenizerDescriptor" /> 
    20                         <input ref="col3" /> 
    21                         <output id="pp1" /> 
    22                         <output id="pp2" /> 
    23                         <output id="pp3" /> 
    24                 </transformer> 
    25  
    26                 <transformer> 
    27                         <descriptor ref="trimDescriptor" /> 
    28                         <input ref="col2" /> 
    29                         <output id="pp4" /> 
    30                 </transformer> 
    31  
    32                 <transformer> 
    33                         <descriptor ref="replaceEmptyStringWithNullDescriptor" /> 
    34                         <input ref="pp4" /> 
    35                         <output id="pp5" /> 
     19                        <descriptor ref="Email standardizer" /> 
     20                        <input ref="col_email" /> 
     21                        <output id="col_username" name="username" /> 
     22                        <output id="col_domain" name="domain" /> 
    3623                </transformer> 
    3724        </transformation> 
     
    4027                <analyzer> 
    4128                        <descriptor ref="String analyzer" /> 
    42                         <input ref="col1" /> 
    43                         <input ref="col2" /> 
    44                         <input ref="pp1" /> 
    45                         <input ref="pp2" /> 
    46                         <input ref="pp3" /> 
    47                         <input ref="pp5" /> 
     29                        <input ref="col_username" /> 
     30                        <input ref="col_domain" /> 
     31                        <input ref="col_fn" /> 
     32                        <input ref="col_ln" /> 
    4833                </analyzer> 
    4934        </analysis> 
Note: See TracChangeset for help on using the changeset viewer.