/*******************************************************************************
* See the NOTICE file distributed with this work for additional information
* regarding copyright ownership.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
******************************************************************************/
package hr.fer.zemris.vhdllab.validation;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;
import org.hibernate.validator.Validator;
import org.junit.Test;
public class NameFormatConstraintValidatorTest {
private final Validator<?> validator = new NameFormatConstraintValidator();
@Test
public void isValidParametarNotFile() {
assertFalse("regular object is valid.", validator.isValid(new Object()));
}
@Test
public void isValidNameCorrect() {
assertTrue("not valid when correct name format.", validator
.isValid("correct_name_format"));
assertTrue("one letter.", validator.isValid("a"));
assertTrue("one letter testbench name.", validator.isValid("a_tb"));
assertTrue("all letters.", validator.isValid("circuitAND"));
assertTrue("with underscore.", validator.isValid("circuit_AND"));
assertTrue("all lowercase.", validator.isValid("circuit_and"));
assertTrue("all uppercase.", validator.isValid("CIRCUIT_AND"));
assertTrue("with number.", validator.isValid("circuitAND4"));
assertTrue("with underscore and number.", validator
.isValid("circuit_AND_4"));
assertTrue("double number.", validator.isValid("circuit_AND_41"));
assertTrue("double number, underscore separated.", validator
.isValid("circuit_AND_4_1"));
assertTrue("number in the middle.", validator.isValid("circuit4AND"));
}
@Test
public void isValidNameIncorrect() {
assertFalse("valid with empty name.", validator.isValid(""));
assertFalse("starts with illegal character.", validator
.isValid("$circuitAND"));
assertFalse("contains illegal character.", validator
.isValid("circuit!AND"));
assertFalse("starts with an underscore.", validator
.isValid("_circuitAND"));
assertFalse("starts with a number.", validator.isValid("1circuitAND"));
assertFalse("double underscore.", validator.isValid("circuit__AND"));
assertFalse("ends with an underscore.", validator
.isValid("circuitAND_"));
assertFalse("not character from English alphabet.", validator
.isValid("circuit_ลก_AND"));
}
@Test
public void isValidNameNotSuitable() {
assertFalse("xor - reserved keyword.", validator.isValid("xor"));
assertFalse("architecture - reserved keyword.", validator
.isValid("architecture"));
assertFalse("end - reserved keyword.", validator.isValid("end"));
assertFalse("if - flow control keyword.", validator.isValid("if"));
assertFalse("std_logic - reserved vhdl type.", validator
.isValid("std_logic"));
}
}