EMMA Coverage Report (generated Fri Feb 14 08:28:31 UTC 2014)
[all classes][org.qedeq.kernel.bo.logic.model]

COVERAGE SUMMARY FOR SOURCE FILE [DynamicModel.java]

nameclass, %method, %block, %line, %
DynamicModel.java100% (6/6)88%  (23/26)91%  (409/448)91%  (69/76)

COVERAGE BREAKDOWN BY CLASS AND METHOD

nameclass, %method, %block, %line, %
     
class DynamicModel100% (1/1)81%  (13/16)88%  (283/322)89%  (55/62)
addFunctionConstant (ModelFunctionConstant, Function): void 0%   (0/1)0%   (0/7)0%   (0/2)
getFunctionConstant (ModelFunctionConstant): Function 0%   (0/1)0%   (0/6)0%   (0/1)
getName (): String 0%   (0/1)0%   (0/3)0%   (0/1)
addEntity (Entity): void 100% (1/1)39%  (12/31)75%  (3/4)
getFunctionSize (int): int 100% (1/1)90%  (18/20)83%  (5/6)
getPredicateSize (int): int 100% (1/1)90%  (18/20)83%  (5/6)
<static initializer> 100% (1/1)100% (47/47)100% (7/7)
DynamicModel (String): void 100% (1/1)100% (71/71)100% (12/12)
addFunction (int, Function): void 100% (1/1)100% (36/36)100% (7/7)
addPredicate (int, Predicate): void 100% (1/1)100% (36/36)100% (7/7)
addPredicateConstant (ModelPredicateConstant, Predicate): void 100% (1/1)100% (7/7)100% (2/2)
getEntitiesSize (): int 100% (1/1)100% (4/4)100% (1/1)
getEntity (int): Entity 100% (1/1)100% (6/6)100% (1/1)
getFunction (int, int): Function 100% (1/1)100% (11/11)100% (2/2)
getPredicate (int, int): Predicate 100% (1/1)100% (11/11)100% (2/2)
getPredicateConstant (ModelPredicateConstant): Predicate 100% (1/1)100% (6/6)100% (1/1)
     
class DynamicModel$1100% (1/1)100% (2/2)100% (9/9)100% (2/2)
DynamicModel$1 (int, int, String, String): void 100% (1/1)100% (7/7)100% (1/1)
calculate (Entity []): boolean 100% (1/1)100% (2/2)100% (1/1)
     
class DynamicModel$2100% (1/1)100% (2/2)100% (9/9)100% (2/2)
DynamicModel$2 (int, int, String, String): void 100% (1/1)100% (7/7)100% (1/1)
calculate (Entity []): boolean 100% (1/1)100% (2/2)100% (1/1)
     
class DynamicModel$3100% (1/1)100% (2/2)100% (32/32)100% (5/5)
DynamicModel$3 (int, int, String, String): void 100% (1/1)100% (7/7)100% (1/1)
calculate (Entity []): boolean 100% (1/1)100% (25/25)100% (4/4)
     
class DynamicModel$4100% (1/1)100% (2/2)100% (38/38)100% (5/5)
DynamicModel$4 (int, int, String, String): void 100% (1/1)100% (7/7)100% (1/1)
calculate (Entity []): boolean 100% (1/1)100% (31/31)100% (4/4)
     
class DynamicModel$5100% (1/1)100% (2/2)100% (38/38)100% (5/5)
DynamicModel$5 (int, int, String, String): void 100% (1/1)100% (7/7)100% (1/1)
calculate (Entity []): boolean 100% (1/1)100% (31/31)100% (4/4)

1/* This file is part of the project "Hilbert II" - http://www.qedeq.org
2 *
3 * Copyright 2000-2014,  Michael Meyling <mime@qedeq.org>.
4 *
5 * "Hilbert II" is free software; you can redistribute
6 * it and/or modify it under the terms of the GNU General Public
7 * License as published by the Free Software Foundation; either
8 * version 2 of the License, or (at your option) any later version.
9 *
10 * This program is distributed in the hope that it will be useful,
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 * GNU General Public License for more details.
14 */
15 
16package org.qedeq.kernel.bo.logic.model;
17 
18import java.util.ArrayList;
19import java.util.HashMap;
20import java.util.List;
21import java.util.Map;
22import java.util.Vector;
23 
24/**
25 * A model for our mathematical world. It has entities, functions and predicates.
26 * There are also predicate and function constants.
27 *
28 * @author  Michael Meyling
29 */
30public abstract class DynamicModel implements Model {
31 
32    /** Always return false. */
33    public static final Predicate FALSE = new Predicate(0, 99, "F", "always false") {
34        public boolean calculate(final Entity[] entities) {
35            return false;
36        }
37    };
38 
39    /** Always return true. */
40    public static final Predicate TRUE = new Predicate(0, 99, "T", "always true") {
41        public boolean calculate(final Entity[] entities) {
42            return true;
43        }
44    };
45 
46    /** Return true if value is even. */
47    public static final Predicate EVEN = new Predicate(0, 99, "| 2", "is even") {
48        public boolean calculate(final Entity[] entities) {
49            boolean result = true;
50            for (int i = 0; i < entities.length; i++) {
51                result &= entities[i].getValue() % 2 == 0;
52            }
53            return result;
54        }
55    };
56 
57    /** Are the entities ordered by < ? */
58    public static final Predicate LESS = new Predicate(0, 99, "<", "less") {
59        public boolean calculate(final Entity[] entities) {
60            boolean result = true;
61            for (int i = 0; i < entities.length - 1; i++) {
62                result &= entities[i].getValue() < entities[i + 1].getValue();
63            }
64            return result;
65        }
66    };
67 
68    /** Are the entities not ordered by < ? */
69    public static final Predicate NOT_LESS = Predicate.not(LESS);
70 
71    /** Are the entities are all the same? */
72    public static final Predicate EQUAL = new Predicate(0, 99, "=", "equal") {
73        public boolean calculate(final Entity[] entities) {
74            boolean result = true;
75            for (int i = 0; i < entities.length - 1; i++) {
76                result &= entities[i].getValue() == entities[i + 1].getValue();
77            }
78            return result;
79        }
80    };
81 
82    /** Are the entities are not all the same? */
83    public static final Predicate NOT_EQUAL = Predicate.not(EQUAL);
84 
85    /** Name of model. */
86    private final String name;
87 
88    /** List of all entities in this model. */
89    private final List entities;
90 
91    /** List of functions for different argument numbers. */
92    private final Vector functionPool;
93 
94    /** List of predicates for different argument numbers. */
95    private final Vector predicatePool;
96 
97    /** Map of predicate constants. */
98    private final Map predicateConstants;
99 
100    /** Map of function constants. */
101    private final Map functionConstants;
102 
103    /**
104     * Constructor.
105     *
106     * @param   name    Model name.
107     */
108    public DynamicModel(final String name) {
109        this.name = name;
110        entities = new ArrayList();
111        functionPool = new Vector();
112        predicatePool = new Vector();
113 
114        predicateConstants = new HashMap();
115        predicateConstants.put(new ModelPredicateConstant("TRUE", 0), TRUE);
116        predicateConstants.put(new ModelPredicateConstant("FALSE", 0), FALSE);
117        predicateConstants.put(new ModelPredicateConstant("equal", 2), EQUAL);
118        predicateConstants.put(new ModelPredicateConstant("notEqual", 2), NOT_EQUAL);
119        functionConstants = new HashMap();
120    }
121 
122    /**
123     * Get model name.
124     *
125     * @return  Model name.
126     */
127    public String getName() {
128        return name;
129    }
130 
131    /**
132     * Returns the description for the concrete model.
133     *
134     * @return  Description of concrete model.
135     */
136    public abstract String getDescription();
137 
138    /**
139     * Add a predicate constant.
140     *
141     * @param   constant    Add for this constant.
142     * @param   predicate   This interpretation.
143     */
144    public void addPredicateConstant(final ModelPredicateConstant constant, final Predicate predicate) {
145        predicateConstants.put(constant, predicate);
146    }
147 
148    /**
149     * Add a function constant.
150     *
151     * @param   constant    Add for this constant.
152     * @param   function    This interpretation.
153     */
154    public void addFunctionConstant(final ModelFunctionConstant constant, final Function function) {
155        functionConstants.put(constant, function);
156    }
157 
158    protected void addEntity(final Entity entity) {
159        if (entities.size() != entity.getValue()) {
160            throw new RuntimeException("entity value should have been " + entities.size()
161                + " but was " + entity.getValue());
162        }
163//        System.out.println("added entity " + entity);
164        entities.add(entity);
165    }
166 
167    public int getEntitiesSize() {
168        return entities.size();
169    }
170 
171    public Entity getEntity(final int number) {
172        return (Entity) entities.get(number);
173    }
174 
175    public int getPredicateSize(final int size) {
176        if (predicatePool.size() <=  size) {
177            return 0;
178        }
179        final List list = (List) predicatePool.get(size);
180        if (list == null) {
181            return 0;
182        }
183        return list.size();
184    }
185 
186    public Predicate getPredicate(final int size, final int number) {
187        final List predicateForSize = (List) predicatePool.get(size);
188        return (Predicate) predicateForSize.get(number);
189    }
190 
191    /**
192     * Add a predicate for interpreting predicate variables.
193     *
194     * @param   size        Add for this function argument number.
195     * @param   predicate   This interpretation.
196     */
197    public void addPredicate(final int size, final Predicate predicate) {
198        if (getPredicateSize(size) == 0) {
199            if (predicatePool.size() <= size) {
200                for (int i = predicatePool.size(); i <= size; i++) {
201                    predicatePool.add(new ArrayList());
202                }
203            }
204        }
205        List list = (List) predicatePool.get(size);
206        list.add(predicate);
207    }
208 
209    public Predicate getPredicateConstant(final ModelPredicateConstant con) {
210        return (Predicate) predicateConstants.get(con);
211    }
212 
213    public int getFunctionSize(final int size) {
214        if (functionPool.size() <=  size) {
215            return 0;
216        }
217        final List list = (List) functionPool.get(size);
218        if (list == null) {
219            return 0;
220        }
221        return list.size();
222    }
223 
224    public Function getFunction(final int size, final int number) {
225        final List functionForSize = (List) functionPool.get(size);
226        return (Function) functionForSize.get(number);
227    }
228 
229    /**
230     * Add a function for interpreting function variables.
231     *
232     * @param   size        Add for this function argument number.
233     * @param   function    This interpretation.
234     */
235    public void addFunction(final int size, final Function function) {
236        if (getFunctionSize(size) == 0) {
237            if (functionPool.size() <= size) {
238                for (int i = functionPool.size(); i <= size; i++) {
239                    functionPool.add(new ArrayList());
240                }
241            }
242        }
243        final List list = (List) functionPool.get(size);
244        list.add(function);
245    }
246 
247    public Function getFunctionConstant(final ModelFunctionConstant con) {
248        return (Function) functionConstants.get(con);
249    }
250 
251    public abstract Entity comprehension(final Entity[] array);
252 
253}

[all classes][org.qedeq.kernel.bo.logic.model]
EMMA 2.1.5320 (stable) (C) Vladimir Roubtsov