1 /*
2  * This file is part of Arduino.
3  *
4  * Copyright 2015 Arduino LLC (http://www.arduino.cc/)
5  *
6  * Arduino is free software; you can redistribute it and/or modify
7  * it under the terms of the GNU General Public License as published by
8  * the Free Software Foundation; either version 2 of the License, or
9  * (at your option) any later version.
10  *
11  * This program is distributed in the hope that it will be useful,
12  * but WITHOUT ANY WARRANTY; without even the implied warranty of
13  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14  * GNU General Public License for more details.
15  *
16  * You should have received a copy of the GNU General Public License
17  * along with this program; if not, write to the Free Software
18  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
19  *
20  * As a special exception, you may use this file as part of a free software
21  * library without restriction.  Specifically, if other files instantiate
22  * templates or use macros or inline functions from this file, or you compile
23  * this file and link it with other files to produce an executable, this
24  * file does not by itself cause the resulting executable to be covered by
25  * the GNU General Public License.  This exception does not however
26  * invalidate any other reasons why the executable file might be covered by
27  * the GNU General Public License.
28  */
29 
30 package processing.app.debug;
31 
32 import static org.junit.Assert.assertTrue;
33 
34 import java.util.HashMap;
35 
36 import org.junit.Test;
37 
38 import cc.arduino.packages.BoardPort;
39 import cc.arduino.packages.Uploader;
40 import cc.arduino.packages.UploaderFactory;
41 import cc.arduino.packages.uploaders.GenericNetworkUploader;
42 import cc.arduino.packages.uploaders.SSHUploader;
43 import cc.arduino.packages.uploaders.SerialUploader;
44 import processing.app.AbstractWithPreferencesTest;
45 import processing.app.helpers.PreferencesMap;
46 
47 public class UploaderFactoryTest extends AbstractWithPreferencesTest {
48 
49   @Test
shouldCreateAnInstanceOfSSHUploader()50   public void shouldCreateAnInstanceOfSSHUploader() throws Exception {
51     TargetBoard board = new LegacyTargetBoard("yun", new PreferencesMap(new HashMap<String, String>()), new TargetPlatformStub("id", new TargetPackageStub("id")));
52 
53     BoardPort boardPort = new BoardPort();
54     boardPort.setBoardName("yun");
55     boardPort.setAddress("192.168.0.1");
56     boardPort.setProtocol("network");
57     boardPort.getPrefs().put("ssh_upload", "yes");
58     Uploader uploader = new UploaderFactory().newUploader(board, boardPort, false);
59 
60     assertTrue(uploader instanceof SSHUploader);
61   }
62 
63   @Test
shouldCreateAnInstanceOfGenericNetworkUploader()64   public void shouldCreateAnInstanceOfGenericNetworkUploader() throws Exception {
65     TargetBoard board = new LegacyTargetBoard("yun", new PreferencesMap(new HashMap<String, String>()), new TargetPlatformStub("id", new TargetPackageStub("id")));
66 
67     BoardPort boardPort = new BoardPort();
68     boardPort.setBoardName("yun");
69     boardPort.setAddress("192.168.0.1");
70     boardPort.setProtocol("network");
71     boardPort.getPrefs().put("ssh_upload", "no");
72     Uploader uploader = new UploaderFactory().newUploader(board, boardPort, false);
73 
74     assertTrue(uploader instanceof GenericNetworkUploader);
75   }
76 
77   @Test
shouldCreateAnInstanceOfBasicUploaderWhenPortIsSerial()78   public void shouldCreateAnInstanceOfBasicUploaderWhenPortIsSerial() throws Exception {
79     TargetBoard board = new LegacyTargetBoard("uno", new PreferencesMap(new HashMap<String, String>()), new TargetPlatformStub("id", new TargetPackageStub("id")));
80 
81     BoardPort boardPort = new BoardPort();
82     boardPort.setBoardName("Arduino Leonardo");
83     boardPort.setAddress("/dev/ttyACM0");
84     boardPort.setProtocol("serial");
85     Uploader uploader = new UploaderFactory().newUploader(board, boardPort, false);
86 
87     assertTrue(uploader instanceof SerialUploader);
88   }
89 }
90