public Retangulo(Ponto p1, Ponto p2)
 {
     _pontoInferiorEsquerdo = p1;
     _pontoSuperiorDireito = p2;
     _pontoSuperiorEsquerdo = new Ponto(p1.x, p2.y);
     _pontoInferiorDireito = new Ponto(p2.x, p1.y);
 }
        internal bool EhSobrepostoAo(Retangulo retangulo)
        {
            var pontoAdjacenteSuperior = new Ponto(_pontoInferiorEsquerdo.x, retangulo._pontoSuperiorDireito.y);
            var pontoAdjacenteInferior = new Ponto(retangulo._pontoSuperiorDireito.x, _pontoInferiorEsquerdo.y);

            foreach (Ponto ponto in retangulo.Pontos())
            {
                if (ContemPonto(ponto))
                    return true;
            }
            return false;
        }
        public void Deve_calcular_o_perimetro_do_retangulo()
        {
            var p1 = new Ponto(0, 0);
            var p2 = new Ponto(1, 1);

            var retangulo = new Retangulo(p1, p2);

            double perimetroCalculado = retangulo.CalculaPerimetro();

            int areaEsperada = 2;
            Assert.AreEqual(areaEsperada, perimetroCalculado);
        }
        public void Deve_calcular_a_area_do_retangulo()
        {
            var p1 = new Ponto(0, 0);
            var p2 = new Ponto(1, 1);

            var retangulo = new Retangulo(p1, p2);

            double areaCalculada = retangulo.CalculaArea();

            int areaEsperada = 1;
            Assert.AreEqual(areaEsperada, areaCalculada);
        }
        public void Deve_retornar_verdadeiro_para_dois_retangulos_sobrepostos()
        {
            var p1 = new Ponto(2, 2);
            var p2 = new Ponto(5, 4);
            var retangulo1 = new Retangulo(p1, p2);

            var p3 = new Ponto(1, 1);
            var p4 = new Ponto(4, 3);
            var retangulo2 = new Retangulo(p3, p4);

            bool ehSobreposto = retangulo1.EhSobrepostoAo(retangulo2);

            Assert.AreEqual(true, ehSobreposto);
        }
        public void Deve_retornar_falso_para_dois_retangulos_nao_sobrepostos()
        {
            var p1 = new Ponto(0, 0);
            var p2 = new Ponto(1, 1);
            var retangulo1 = new Retangulo(p1, p2);

            var p3 = new Ponto(2, 2);
            var p4 = new Ponto(3, 3);
            var retangulo2 = new Retangulo(p3, p4);

            bool naoEhSobreposto = retangulo1.EhSobrepostoAo(retangulo2);

            Assert.AreEqual(false, naoEhSobreposto);
        }
 private bool ContemPonto(Ponto ponto)
 {
     return (_pontoInferiorEsquerdo.x <= ponto.x && ponto.x <= _pontoSuperiorDireito.x) && (_pontoInferiorEsquerdo.y <= ponto.y && ponto.y <= _pontoSuperiorDireito.y);
 }
 private bool ContemPonto(Ponto ponto)
 {
     return((_pontoInferiorEsquerdo.x <= ponto.x && ponto.x <= _pontoSuperiorDireito.x) && (_pontoInferiorEsquerdo.y <= ponto.y && ponto.y <= _pontoSuperiorDireito.y));
 }