### Question:
Canvas { public Canvas merge(int x, int y, int what) { return merge(x, y, (char) what); } Canvas(int width, int height); Canvas clear(); Canvas clear(char c); Canvas box(int x, int y, int w, int h); Canvas box(int x, int y, int w, int h, Style style); Canvas line(int x1, int y1, int x2, int y2, int what); Canvas line(int x1, int y1, int x2, int y2, char what); Canvas merge(int x, int y, int what); Canvas merge(int x, int y, char what); char set(int x, int y, char what); char get(int x, int y); int width(); int height(); @Override String toString(); void toString(StringBuilder sb); Canvas box(); Canvas box(Style style); Canvas merge(Canvas secondary, int dx, int dy); void set(int x, int y, String message);  }### Answer:
@Test public void testMerge() { Canvas c1 = new Canvas(10, 10); c1.box(); Canvas c2 = new Canvas(5, 5); c2.box(); c1.merge(c2, 5, 5); assertEquals("" + "┌────────┐\n" + "│ │\n" + "│ │\n" + "│ │\n" + "│ │\n" + "│ ┌───┤\n" + "│ │ │\n" + "│ │ │\n" + "│ │ │\n" + "└────┴───┘\n" + "", c1.toString()); c1.merge(c2, 0, 0); c1.merge(c2, 4, 0); assertEquals("" + "┌───┬───┬┐\n" + "│ │ ││\n" + "│ │ ││\n" + "│ │ ││\n" + "├───┴───┘│\n" + "│ ┌───┤\n" + "│ │ │\n" + "│ │ │\n" + "│ │ │\n" + "└────┴───┘\n" + "", c1.toString()); c1.clear().box(); c1.merge(c2, -3, -2); assertEquals("" + " ┼───────┐\n" + " │ │\n" + "┼┘ │\n" + "│ │\n" + "│ │\n" + "│ │\n" + "│ │\n" + "│ │\n" + "│ │\n" + "└────────┘\n" + "", c1.toString()); c1.merge(c2, 8, 8); assertEquals("" + " ┼───────┐\n" + " │ │\n" + "┼┘ │\n" + "│ │\n" + "│ │\n" + "│ │\n" + "│ │\n" + "│ │\n" + "│ ┌┼\n" + "└───────┼ \n" + "", c1.toString()); }