/testability-explorer/src/main/java/com/google/test/metric/method/op/stack/Duplicate.java
Java | 49 lines | 25 code | 9 blank | 15 comment | 0 complexity | 914b8022a784c9da834524147874ead7 MD5 | raw file
1/* 2 * Copyright 2007 Google Inc. 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); you may not 5 * use this file except in compliance with the License. You may obtain a copy of 6 * the License at 7 * 8 * http://www.apache.org/licenses/LICENSE-2.0 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 12 * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 13 * License for the specific language governing permissions and limitations under 14 * the License. 15 */ 16package com.google.test.metric.method.op.stack; 17 18import java.util.LinkedList; 19import java.util.List; 20 21import com.google.test.metric.Variable; 22 23public class Duplicate extends StackOperation { 24 25 private final int offset; 26 27 public Duplicate(int lineNumber, int offset) { 28 super(lineNumber); 29 this.offset = offset; 30 } 31 32 @Override 33 public int getOperatorCount() { 34 return 1 + offset; 35 } 36 37 @Override 38 public List<Variable> apply(List<Variable> input) { 39 LinkedList<Variable> list = new LinkedList<Variable>(input); 40 list.add(0, input.get(input.size() - 1)); 41 return list; 42 } 43 44 @Override 45 public String toString() { 46 return "duplicate" + (offset > 0 ? "_X" + offset : ""); 47 } 48 49}