开发者测试—幕测平台—Triangle测试例子

开发者测试Triangle测试例子

题目源代码

package net.mooctest;
public class Triangle {
	protected long lborderA = 0;

	protected long lborderB = 0;

	protected long lborderC = 0;

	// Constructor
	public Triangle(long lborderA, long lborderB, long lborderC) {

		this.lborderA = lborderA;

		this.lborderB = lborderB;

		this.lborderC = lborderC;

	}

	/**
	 * check if it is a triangle
	 * 
	 * @return true for triangle and false not
	 */
	public boolean isTriangle(Triangle triangle) {
		boolean isTriangle = false;

		// check boundary
		if ((triangle.lborderA > 0 && triangle.lborderA <= Long.MAX_VALUE)
				&& (triangle.lborderB > 0 && triangle.lborderB <= Long.MAX_VALUE)
				&& (triangle.lborderC > 0 && triangle.lborderC <= Long.MAX_VALUE)) {

			// check if subtraction of two border larger than the third
			if (diffOfBorders(triangle.lborderA, triangle.lborderB) < triangle.lborderC
					&& diffOfBorders(triangle.lborderB, triangle.lborderC) < triangle.lborderA
					&& diffOfBorders(triangle.lborderC, triangle.lborderA) < triangle.lborderB) {
				isTriangle = true;
			}

		}
		return isTriangle;
	}

	/**
	 * Check the type of triangle
	 * 
	 * Consists of "Illegal", "Regular", "Scalene", "Isosceles"
	 */
	public String getType(Triangle triangle) {
		String strType = "Illegal";
        //先判断是否是三角形
		if (isTriangle(triangle)) {
			// Is Regular
			if (triangle.lborderA == triangle.lborderB
					&& triangle.lborderB == triangle.lborderC) {
				strType = "Regular";
			}
			// If scalene
			else if ((triangle.lborderA != triangle.lborderB)
					&& (triangle.lborderB != triangle.lborderC)
					&& (triangle.lborderA != triangle.lborderC)) {
				strType = "Scalene";
			}
			// if isosceles
			else {
				strType = "Isosceles";
			}
		}

		return strType;
	}

	/**
	 * calculate the diff between borders
	 * 
	 * */
	public long diffOfBorders(long a, long b) {
		return (a > b) ? (a - b) : (b - a);
	}

	/**
	 * get length of borders
	 */
	public long[] getBorders() {
		long[] borders = new long[3];
		borders[0] = this.lborderA;
		borders[1] = this.lborderB;
		borders[2] = this.lborderC;
		return borders;
	}
}

测试类代码,有一些解析

package net.mooctest;
import static org.junit.Assert.*;
import org.junit.Test;

public class TriangleTest {
	//创建三角形例子,同样的三角形,不同的边长位置
	Triangle T1=new Triangle(5, 3, 4);
	Triangle T2=new Triangle(5,4,3);
	Triangle T3=new Triangle(4,3,5);
	//创建三角形一边的边长在边界值,在3个位置都设置一次
	Triangle T4=new Triangle(5,Long.MAX_VALUE,4);
	Triangle T5=new Triangle(5,3,Long.MAX_VALUE);
	Triangle T6=new Triangle(Long.MAX_VALUE,3,4);
	//创建三角形,边长为负值,在每个边都设置一次
	Triangle T7=new Triangle(-1,3,4);
	Triangle T8=new Triangle(5,-1,4);
	Triangle T9=new Triangle(5,3,-1);
	//创建等边三角形
	Triangle T10=new Triangle(3,3,3);
	//创建等腰三角形,每个边设置一次
	Triangle T11=new Triangle(4,3,3);
	Triangle T12=new Triangle(3,3,4);
	Triangle T13=new Triangle(3,4,3);
	//创建一个a<b的边长的正常的三角形,为后面第四个方法找a<b的输出做条件
	Triangle T14=new Triangle(6,8,10);
	
	//为第四个方法测试而建立的数组
	long []borders= {0,0,0};
	
	@Test
	public void testIsTriangle() {
	//在测试文档里要求使用断言(assert)
	//asertTrue:如果括号里的值为True则往下执行
		
	assertTrue(T1.isTriangle(T1));
	assertTrue(T2.isTriangle(T2));
	assertTrue(T3.isTriangle(T3));
	
	assertFalse(T4.isTriangle(T4));
	assertFalse(T5.isTriangle(T5));
	assertFalse(T6.isTriangle(T6));
	
	assertFalse(T7.isTriangle(T7));
	assertFalse(T8.isTriangle(T8));
	assertFalse(T9.isTriangle(T9));
	
	assertTrue(T10.isTriangle(T10));
	assertTrue(T11.isTriangle(T11));
	assertTrue(T12.isTriangle(T12));
	assertTrue(T13.isTriangle(T13));
	assertTrue(T14.isTriangle(T14));
}
	@Test
	public void testgetType() {
	//asertEquals,后面的值与前面的值一样则往下执行	
	assertEquals("Illegal", T4.getType(T4));//不是三角形
	assertEquals("Regular", T10.getType(T10));//等边三角形
	assertEquals("Scalene", T14.getType(T14));//三边不等的三角形
	assertEquals("Isosceles", T11.getType(T11));//等腰三角形
	
	assertFalse("Illegal"==T1.getType(T1));
	assertFalse("Regular"==T2.getType(T2));
	assertFalse("Scalene"==T10.getType(T10));
	assertFalse("Isosceles"==T3.getType(T3));
	
	assertTrue("Illegal"==T5.getType(T5));
	assertTrue("Regular"==T10.getType(T10));
	assertTrue("Scalene"==T14.getType(T14));
	assertTrue("Isosceles"==T12.getType(T12));
	
	}
	
	@Test
	public void testdiffOfBorders() {
		//对三目运算结果都输出一次,a-b 和 b-a,还有当a=b的时候
		assertEquals(0,T10.diffOfBorders(T10.lborderA, T10.lborderB));//a=b
		assertEquals(2,T14.diffOfBorders(T14.lborderA, T14.lborderB));//输出b-a
		assertTrue(2==T1.diffOfBorders(T1.lborderA, T1.lborderB));//输出a-b
		assertFalse(1==T1.diffOfBorders(T1.lborderA, T1.lborderB));//输出a-b
		
	}
	
	@Test
	public void testgetBorders() {
	  borders=T10.getBorders();
	  //对数组里的全部元素进行比较检测
	  assertEquals(T10.lborderA,borders[0]);
	  assertTrue(T10.lborderB==borders[1]);
	  assertTrue(T10.lborderC==borders[2]);
	   
	}
}

在这里插入图片描述

  • 4
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值