| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192 |
- // SPDX-License-Identifier: Apache-2.0
- use crate::test_solidity;
- use solang::sema::ast;
- #[test]
- fn version_match() {
- let ns = test_solidity("pragma solidity 0.5.16; pragma solidity 0.5;");
- assert_eq!(
- ns.highest_solidity_version(0),
- Some(ast::Version {
- major: 0,
- minor: Some(5),
- patch: Some(16)
- })
- );
- let ns = test_solidity("pragma solidity 0.5; pragma solidity 0.5.16 <1 >0;");
- assert_eq!(
- ns.highest_solidity_version(0),
- Some(ast::Version {
- major: 0,
- minor: Some(5),
- patch: Some(16)
- })
- );
- let ns = test_solidity("pragma solidity 0.5 || 0.5.16 || <1 || >0;");
- assert_eq!(
- ns.highest_solidity_version(0),
- Some(ast::Version {
- major: 0,
- minor: Some(5),
- patch: Some(16)
- })
- );
- let ns = test_solidity("pragma solidity =0.5; pragma solidity <=0.5.16 >= 0;");
- assert_eq!(
- ns.highest_solidity_version(0),
- Some(ast::Version {
- major: 0,
- minor: Some(5),
- patch: Some(16)
- })
- );
- let ns = test_solidity("pragma solidity <0.5.17;");
- assert_eq!(
- ns.highest_solidity_version(0),
- Some(ast::Version {
- major: 0,
- minor: Some(5),
- patch: Some(16)
- })
- );
- let ns = test_solidity("pragma solidity <0.5;");
- assert_eq!(
- ns.highest_solidity_version(0),
- Some(ast::Version {
- major: 0,
- minor: Some(4),
- patch: None
- })
- );
- let ns = test_solidity("pragma solidity <0;");
- assert_eq!(ns.highest_solidity_version(0), None);
- let ns = test_solidity("pragma solidity ~0.0;");
- assert_eq!(ns.highest_solidity_version(0), None);
- let ns = test_solidity("pragma solidity <0.5.0;");
- assert_eq!(
- ns.highest_solidity_version(0),
- Some(ast::Version {
- major: 0,
- minor: Some(4),
- patch: None
- })
- );
- let ns = test_solidity("pragma solidity <1;");
- assert_eq!(
- ns.highest_solidity_version(0),
- Some(ast::Version {
- major: 0,
- minor: None,
- patch: None
- })
- );
- let ns = test_solidity("pragma solidity <1.0.0;");
- assert_eq!(
- ns.highest_solidity_version(0),
- Some(ast::Version {
- major: 0,
- minor: None,
- patch: None
- })
- );
- let ns = test_solidity("pragma solidity ^1.2.0;");
- assert_eq!(
- ns.highest_solidity_version(0),
- Some(ast::Version {
- major: 1,
- minor: None,
- patch: None
- })
- );
- let ns = test_solidity("pragma solidity ^0.5.16;");
- assert_eq!(
- ns.highest_solidity_version(0),
- Some(ast::Version {
- major: 0,
- minor: Some(5),
- patch: None
- })
- );
- let ns = test_solidity("pragma solidity ~0.5.16 *1.0.0;");
- assert_eq!(
- ns.highest_solidity_version(0),
- Some(ast::Version {
- major: 0,
- minor: Some(5),
- patch: None
- })
- );
- let ns = test_solidity("pragma solidity 0.5.0 - 0.5.18;");
- assert_eq!(
- ns.highest_solidity_version(0),
- Some(ast::Version {
- major: 0,
- minor: Some(5),
- patch: Some(18)
- })
- );
- assert!(ns.solidity_minor_version(0, 5));
- let ns = test_solidity("pragma solidity 0.4 - 0.5 ^0;");
- assert_eq!(
- ns.highest_solidity_version(0),
- Some(ast::Version {
- major: 0,
- minor: Some(5),
- patch: None
- })
- );
- assert!(ns.solidity_minor_version(0, 5));
- let ns = test_solidity("pragma solidity 0.4 - 0.5 ~0;");
- assert_eq!(
- ns.highest_solidity_version(0),
- Some(ast::Version {
- major: 0,
- minor: Some(5),
- patch: None
- })
- );
- assert!(ns.solidity_minor_version(0, 5));
- let ns = test_solidity("pragma solidity ~0;");
- assert_eq!(ns.highest_solidity_version(0), None);
- assert!(!ns.solidity_minor_version(0, 5));
- }
|