/* This file is part of mjprof. mjprof is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. mjprof is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with mjprof. If not, see <http://www.gnu.org/licenses/>. */ package com.performizeit.mjprof; import com.performizeit.mjprof.monads.MJStep; import org.junit.Test; import java.util.ArrayList; import java.util.Arrays; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertNull; public class MJProfTest { @Test public void argWhichContainsPeriod() throws Exception { String args = "contains/key.k,val.val/"; ArrayList<MJStep> steps = MJProf.parseCommandLine(args); assertNotNull(steps); assertEquals(steps.get(0).getStepName(), "contains"); assertEquals(steps.get(0).getStepArgs(), Arrays.asList("key.k", "val.val")); } @Test public void argWhichContainsPeriodSplit() throws Exception { String args = "contains/key.k,val.val/.list"; ArrayList<String> steps = MJProf.splitCommandLine(args); assertNotNull(steps); assertEquals(steps.get(0), "contains/key.k,val.val/"); assertEquals(steps.get(1), "list"); } @Test public void twoTrailingCOmmas() throws Exception { String args = "contains/key:k,1,1,,/.list"; ArrayList<String> steps = MJProf.splitCommandLine(args); assertNotNull(steps); assertEquals(steps.get(0), "contains/key:k,1,1,,/"); assertEquals(steps.get(1), "list"); } @Test public void argWhichContainsSlashSplit() throws Exception { String args = "path/lib/dd/a.kk/.list"; ArrayList<String> steps = MJProf.splitCommandLine(args); assertNotNull(steps); assertEquals(steps.get(0), "path/lib/dd/a.kk/"); assertEquals(steps.get(1), "list"); } @Test public void argWhichContainsSlashSplit2() throws Exception { String args = "path/lib/dd/a.txt/.list"; ArrayList<String> steps = MJProf.splitCommandLine(args); assertNotNull(steps); assertEquals(steps.get(0), "path/lib/dd/a.txt/"); assertEquals(steps.get(1), "list"); } @Test public void argWhichContainsPeriod2() throws Exception { String args = "contains/key.k,val.,,val/.contains/stack,com.performizeit/"; ArrayList<MJStep> steps = MJProf.parseCommandLine(args); assertNotNull(steps); assertEquals(steps.size(),2); assertEquals(steps.get(0).getStepName(), "contains"); assertEquals(steps.get(0).getStepArgs(), Arrays.asList("key.k", "val.,val")); assertEquals(steps.get(1).getStepName(), "contains"); assertEquals(steps.get(1).getStepArgs(), Arrays.asList("stack", "com.performizeit")); } @Test public void pathWithSlash() throws Exception { String args = "path//tmp/bn.txt/.contains/name,Timer/.bottom/3/"; ArrayList<MJStep> steps = MJProf.parseCommandLine(args); assertNotNull(steps); assertEquals(steps.size(),3); assertEquals(steps.get(0).getStepName(), "path"); assertEquals(steps.get(0).getStepArgs(), Arrays.asList("/tmp/bn.txt")); assertEquals(steps.get(1).getStepName(), "contains"); assertEquals(steps.get(1).getStepArgs(), Arrays.asList("name", "Timer")); assertEquals(steps.get(2).getStepName(), "bottom"); assertEquals(steps.get(2).getStepArgs(), Arrays.asList("3")); } @Test public void pathWithSlashAndBackslash() throws Exception { String args = "path//tmp/bn.txt/.path/c:\\hello\\myfolder\\myfile.txt/"; ArrayList<MJStep> steps = MJProf.parseCommandLine(args); assertNotNull(steps); assertEquals(steps.size(),2); assertEquals(steps.get(0).getStepName(), "path"); assertEquals(steps.get(0).getStepArgs(), Arrays.asList("/tmp/bn.txt")); assertEquals(steps.get(1).getStepName(), "path"); assertEquals(steps.get(1).getStepArgs(), Arrays.asList("c:\\hello\\myfolder\\myfile.txt")); } @Test public void argListContainsSpaces() throws Exception { String args = "contains/key.k,val.,,val/.contains/stack,com performizeit/"; ArrayList<MJStep> steps = MJProf.parseCommandLine(args); assertNotNull(steps); assertEquals(steps.size(),2); assertEquals(steps.get(0).getStepName(), "contains"); assertEquals(steps.get(0).getStepArgs(), Arrays.asList("key.k", "val.,val")); assertEquals(steps.get(1).getStepName(), "contains"); assertEquals(steps.get(1).getStepArgs(), Arrays.asList("stack", "com performizeit")); } @Test public void spaceOutsideAnArgumentIsASeparator() throws Exception { String args = "contains/key.k,val.,,val/ contains/stack,com performizeit/"; ArrayList<MJStep> steps = MJProf.parseCommandLine(args); assertNotNull(steps); assertEquals(steps.size(),2); assertEquals(steps.get(0).getStepName(), "contains"); assertEquals(steps.get(0).getStepArgs(), Arrays.asList("key.k", "val.,val")); assertEquals(steps.get(1).getStepName(), "contains"); assertEquals(steps.get(1).getStepArgs(), Arrays.asList("stack", "com performizeit")); } @Test public void notValidStep() throws Exception { String args ="notValid"; ArrayList<MJStep> steps = MJProf.parseCommandLine(args); assertNull(steps); } }