@Override public MutatedInstanceMetaData<MultiMaskEfsmSkeleton, MultiMaskEfsmMutation> apply( MultiMaskEfsmSkeleton individual) { List<Step> transitions = getTransitions(individual); if (transitions.isEmpty()) { return new MutatedInstanceMetaData<MultiMaskEfsmSkeleton, MultiMaskEfsmMutation>( new MultiMaskEfsmSkeleton(individual), new MutationCollection<MultiMaskEfsmMutation>()); } MyMap num = new MyMap(); for (Step s : transitions) { num.put(s, 1); } for (VarsActionsScenario s : individual.getCounterExamples()) { getTrace(individual, s, num); } double sum = 0; for (Step s : transitions) { sum += num.get(s); } int i = 0; double cur = num.get(transitions.get(0)) / sum; ThreadLocalRandom random = ThreadLocalRandom.current(); while (random.nextDouble() > cur) { i++; cur += num.get(transitions.get(i)) / sum; } Step s = transitions.get(i); MultiMaskEfsmSkeleton ind = new MultiMaskEfsmSkeleton(individual); int x = random.nextInt(MultiMaskEfsmSkeleton.STATE_COUNT); ind.getState(s.state).getTransitionGroup(s.event, s.group).setNewState(s.index, x); return new MutatedInstanceMetaData<MultiMaskEfsmSkeleton, MultiMaskEfsmMutation>( ind, new MutationCollection<MultiMaskEfsmMutation>( new DestinationStateMutation(s.state, s.event, s.group, s.index, x))); }
public static void main(String[] args) { MyMap<Integer, String> myMap = new MyMap<Integer, String>(); myMap.put(1, "Eugene"); myMap.put(56, "Oleg"); // ключики - любые System.out.println(myMap); myMap.put( 1, "Oleg_new_value"); // должен перезатереть старое значение - Eugene, смотрите ключик 1 -> 8 // строчка myMap.put(5, "Pasha"); System.out.println(myMap); myMap.putForcibly(6, "TEST nextEntry", 5); myMap.putForcibly(7, "TEST nextEntry 2!!!", 5); System.out.println(myMap); // myMap.putForcibly(7, "different hash", 4); // myMap.createNewMyEntry("TEST nextEntry", 5, ); // myMap.deleteMapObject(5); // first version // myMap.deleteMapObjectWithoutIteratorOld(7); // second version // System.out.println(myMap); // myMap.deleteMapObjectWithoutIterator(1); myMap.remove(5); Iterator iterator = myMap.iterator(); while (iterator.hasNext()) { System.out.println("iterator.next() --> " + iterator.next()); } }
public void testExplicitIgnoralWithMap() throws Exception { // test simulating need to filter out metadata like class name MyMap value = new MyMap(); value.put("a", "b"); value.put("@class", MyMap.class.getName()); Map<String, Object> result = writeAndMap(MAPPER, value); assertEquals(1, result.size()); // verify that specified field is ignored assertFalse(result.containsKey("@class")); // and that others are not assertEquals(value.get("a"), result.get("a")); }
@Override public V get(Object key) { if (key == null) return null; myHardKeyInstance.set((K) key); V result = myMap.get(myHardKeyInstance); myHardKeyInstance.clear(); return result; }
@Override public boolean containsKey(Object key) { if (key == null) return false; // optimization: myHardKeyInstance.set((K) key); boolean result = myMap.containsKey(myHardKeyInstance); myHardKeyInstance.clear(); return result; }
@Override public V remove(@NotNull Object key) { processQueue(); // optimization: myHardKeyInstance.set((K) key); V result = myMap.remove(myHardKeyInstance); myHardKeyInstance.clear(); return result; }
// returns true if some refs were tossed boolean processQueue() { boolean processed = false; try { processingQueue = true; Key<K> wk; while ((wk = (Key<K>) myReferenceQueue.poll()) != null) { removeKey(wk); processed = true; } } finally { processingQueue = false; } myMap.compactIfNecessary(); return processed; }
private void getTrace(MultiMaskEfsmSkeleton individual, VarsActionsScenario scenario, MyMap num) { int state = individual.getInitialState(); for (int i = 0; i < scenario.size(); i++) { ScenarioElement element = scenario.get(i); int eid = MultiMaskEfsmSkeleton.INPUT_EVENTS.get(element.getInputEvent()); String variableValues = element.getVariableValues(); int res = state, group = -1, index = 0; for (int j = 0; j < individual.getState(state).getTransitionGroupCount(eid); j++) { TransitionGroup g = individual.getState(state).getTransitionGroup(eid, j); if (g == null) { continue; } if (!g.hasTransitions()) { continue; } List<Integer> meaningfulPredicateIds = g.getMeaningfulPredicateIds(); StringBuilder meaningfulPredicateValues = new StringBuilder(); for (Integer k : meaningfulPredicateIds) { meaningfulPredicateValues.append(variableValues.charAt(k)); } int transitionIndex = Integer.parseInt(meaningfulPredicateValues.toString(), 2); int newState = g.getNewState(transitionIndex); if (newState == -1) { continue; } g.setTransitionUsed(transitionIndex); res = newState; group = j; index = transitionIndex; break; } if (group != -1) { Step s = new Step(state, eid, group, index); num.add(s, lambda); state = res; } } }
@TestOnly int underlyingMapSize() { return myMap.size(); }
@Override public void clear() { processQueue(); myMap.clear(); }
V putKey(@NotNull Key<K> weakKey, V value) { return myMap.put(weakKey, value); }
V removeKey(@NotNull Key<K> key) { return myMap.remove(key); }
public static void main(String[] args) { MyMap map = new MyMap(); map.put("assss", 1); System.out.println(map.get("assss")); }