factories deprecated: bitwiseOp, controlOp, cryptoOp, reservedOp, spliceOp

This commit is contained in:
Tom McCabe 2016-04-25 15:56:59 -05:00
parent 19f552dd15
commit 93f5eee1b7
11 changed files with 59 additions and 34 deletions

View file

@ -2,13 +2,13 @@ package org.scalacoin.script
//import org.scalacoin.script.arithmetic.{ArithmeticOperations} //import org.scalacoin.script.arithmetic.{ArithmeticOperations}
import org.scalacoin.script.arithmetic.ArithmeticOperation import org.scalacoin.script.arithmetic.ArithmeticOperation
import org.scalacoin.script.bitwise.BitwiseOperationsFactory import org.scalacoin.script.bitwise.BitwiseOperation
import org.scalacoin.script.constant._ import org.scalacoin.script.constant._
import org.scalacoin.script.control.ControlOperationsFactory import org.scalacoin.script.control.ControlOperations
import org.scalacoin.script.crypto.CryptoOperationFactory import org.scalacoin.script.crypto.CryptoOperation
import org.scalacoin.script.locktime.LocktimeOperation import org.scalacoin.script.locktime.LocktimeOperation
import org.scalacoin.script.reserved.ReservedOperationFactory import org.scalacoin.script.reserved.ReservedOperation
import org.scalacoin.script.splice.SpliceOperationsFactory import org.scalacoin.script.splice.SpliceOperation
import org.scalacoin.script.stack.StackOperation import org.scalacoin.script.stack.StackOperation
import org.scalacoin.util.{BitcoinSUtil, BitcoinSLogger} import org.scalacoin.util.{BitcoinSUtil, BitcoinSLogger}
import org.slf4j.LoggerFactory import org.slf4j.LoggerFactory
@ -81,8 +81,8 @@ trait ScriptOperationFactory[T <: ScriptOperation] extends BitcoinSLogger {
object ScriptOperation extends ScriptOperationFactory[ScriptOperation] { object ScriptOperation extends ScriptOperationFactory[ScriptOperation] {
lazy val operations = ScriptNumberOperation.operations ++ Seq(OP_FALSE,OP_PUSHDATA1, OP_PUSHDATA2,OP_PUSHDATA4,OP_TRUE) ++ StackOperation.operations ++ LocktimeOperation.operations ++ lazy val operations = ScriptNumberOperation.operations ++ Seq(OP_FALSE,OP_PUSHDATA1, OP_PUSHDATA2,OP_PUSHDATA4,OP_TRUE) ++ StackOperation.operations ++ LocktimeOperation.operations ++
CryptoOperationFactory.operations ++ ControlOperationsFactory.operations ++ BitwiseOperationsFactory.operations ++ CryptoOperation.operations ++ ControlOperations.operations ++ BitwiseOperation.operations ++
ArithmeticOperation.operations ++ BytesToPushOntoStack.operations ++ SpliceOperationsFactory.operations ++ ArithmeticOperation.operations ++ BytesToPushOntoStack.operations ++ SpliceOperation.operations ++
ReservedOperationFactory.operations ReservedOperation.operations
} }

View file

@ -1,5 +1,6 @@
package org.scalacoin.script.bitwise package org.scalacoin.script.bitwise
import org.scalacoin.script.ScriptOperationFactory
import org.scalacoin.script.constant.ScriptOperation import org.scalacoin.script.constant.ScriptOperation
/** /**
@ -49,3 +50,6 @@ case object OP_XOR extends BitwiseOperation {
override def opCode = 134 override def opCode = 134
} }
object BitwiseOperation extends ScriptOperationFactory[BitwiseOperation] {
override def operations = Seq(OP_EQUAL, OP_EQUALVERIFY, OP_INVERT, OP_AND, OP_OR, OP_XOR)
}

View file

@ -1,5 +1,6 @@
package org.scalacoin.script.control package org.scalacoin.script.control
import org.scalacoin.script.ScriptOperationFactory
import org.scalacoin.script.constant.ScriptOperation import org.scalacoin.script.constant.ScriptOperation
/** /**
@ -58,3 +59,7 @@ case object OP_VERIFY extends ControlOperations {
case object OP_RETURN extends ControlOperations { case object OP_RETURN extends ControlOperations {
override def opCode = 106 override def opCode = 106
} }
object ControlOperations extends ScriptOperationFactory[ControlOperations] {
override def operations = Seq(OP_ELSE, OP_ENDIF, OP_IF, OP_NOTIF, OP_RETURN, OP_VERIFY)
}

View file

@ -1,5 +1,6 @@
package org.scalacoin.script.crypto package org.scalacoin.script.crypto
import org.scalacoin.script.ScriptOperationFactory
import org.scalacoin.script.constant.ScriptOperation import org.scalacoin.script.constant.ScriptOperation
/** /**
@ -93,3 +94,8 @@ case object OP_CHECKMULTISIG extends CryptoSignatureEvaluation {
case object OP_CHECKMULTISIGVERIFY extends CryptoSignatureEvaluation { case object OP_CHECKMULTISIGVERIFY extends CryptoSignatureEvaluation {
override def opCode = 175 override def opCode = 175
} }
object CryptoOperation extends ScriptOperationFactory[CryptoOperation] {
override def operations = Seq(OP_CHECKMULTISIG, OP_CHECKMULTISIGVERIFY, OP_CHECKSIG, OP_CHECKSIGVERIFY,
OP_CODESEPARATOR, OP_HASH160, OP_HASH256, OP_RIPEMD160, OP_SHA1, OP_SHA256)
}

View file

@ -1,5 +1,6 @@
package org.scalacoin.script.reserved package org.scalacoin.script.reserved
import org.scalacoin.script.ScriptOperationFactory
import org.scalacoin.script.constant.ScriptOperation import org.scalacoin.script.constant.ScriptOperation
/** /**
@ -96,4 +97,8 @@ case object OP_NOP10 extends NOP {
case class UndefinedOP_NOP(opCode : Int) extends ReservedOperation case class UndefinedOP_NOP(opCode : Int) extends ReservedOperation
object ReservedOperation extends ScriptOperationFactory[ReservedOperation] {
lazy val undefinedOpCodes = for {i <- 0xba to 0xff} yield UndefinedOP_NOP(i)
def operations = Seq(OP_RESERVED,OP_VER,OP_VERIF,OP_VERNOTIF,OP_RESERVED, OP_RESERVED1, OP_RESERVED2,
OP_NOP, OP_NOP1,OP_NOP3,OP_NOP4,OP_NOP5,OP_NOP6,OP_NOP7,OP_NOP8, OP_NOP9, OP_NOP10) ++ undefinedOpCodes
}

View file

@ -1,5 +1,6 @@
package org.scalacoin.script.splice package org.scalacoin.script.splice
import org.scalacoin.script.ScriptOperationFactory
import org.scalacoin.script.constant.ScriptOperation import org.scalacoin.script.constant.ScriptOperation
/** /**
@ -27,3 +28,7 @@ case object OP_RIGHT extends SpliceOperation {
case object OP_SIZE extends SpliceOperation { case object OP_SIZE extends SpliceOperation {
override def opCode = 130 override def opCode = 130
} }
object SpliceOperation extends ScriptOperationFactory[SpliceOperation] {
def operations = Seq(OP_CAT, OP_LEFT, OP_RIGHT, OP_SIZE, OP_SUBSTR)
}

View file

@ -5,11 +5,11 @@ import org.scalatest.{FlatSpec, MustMatchers}
/** /**
* Created by chris on 1/8/16. * Created by chris on 1/8/16.
*/ */
class BitwiseOperationsFactoryTest extends FlatSpec with MustMatchers with BitwiseOperationsFactory { class BitwiseOperationsFactoryTest extends FlatSpec with MustMatchers {
"BitwiseOperationsFactory" must "match strings with bitwise operations" in { "BitwiseOperationsFactory" must "match strings with bitwise operations" in {
fromString("OP_EQUAL") must be (Some(OP_EQUAL)) BitwiseOperation.fromString("OP_EQUAL") must be (Some(OP_EQUAL))
fromString("OP_EQUALVERIFY") must be (Some(OP_EQUALVERIFY)) BitwiseOperation.fromString("OP_EQUALVERIFY") must be (Some(OP_EQUALVERIFY))
fromString("RANDOM") must be (None) BitwiseOperation.fromString("RANDOM") must be (None)
} }
} }

View file

@ -5,16 +5,16 @@ import org.scalatest.{MustMatchers, FlatSpec}
/** /**
* Created by chris on 1/8/16. * Created by chris on 1/8/16.
*/ */
class ControlOperationsFactoryTest extends FlatSpec with MustMatchers with ControlOperationsFactory { class ControlOperationsFactoryTest extends FlatSpec with MustMatchers {
"ControlOperationsFactory" must "match a string with a control operation" in { "ControlOperationsFactory" must "match a string with a control operation" in {
fromString("OP_ELSE") must be (Some(OP_ELSE)) ControlOperations.fromString("OP_ELSE") must be (Some(OP_ELSE))
fromString("OP_ENDIF") must be (Some(OP_ENDIF)) ControlOperations.fromString("OP_ENDIF") must be (Some(OP_ENDIF))
fromString("OP_IF") must be (Some(OP_IF)) ControlOperations.fromString("OP_IF") must be (Some(OP_IF))
fromString("OP_NOTIF") must be (Some(OP_NOTIF)) ControlOperations.fromString("OP_NOTIF") must be (Some(OP_NOTIF))
fromString("OP_RETURN") must be (Some(OP_RETURN)) ControlOperations.fromString("OP_RETURN") must be (Some(OP_RETURN))
fromString("OP_VERIFY") must be (Some(OP_VERIFY)) ControlOperations.fromString("OP_VERIFY") must be (Some(OP_VERIFY))
fromString("RANDOM") must be (None) ControlOperations.fromString("RANDOM") must be (None)
} }
} }

View file

@ -5,12 +5,12 @@ import org.scalatest.{MustMatchers, FlatSpec}
/** /**
* Created by chris on 1/8/16. * Created by chris on 1/8/16.
*/ */
class CryptoOperationsFactoryTest extends FlatSpec with MustMatchers with CryptoOperationFactory { class CryptoOperationsFactoryTest extends FlatSpec with MustMatchers {
"CryptoOperationsFactory" must "match strings with crypto operations" in { "CryptoOperationsFactory" must "match strings with crypto operations" in {
fromString("OP_CHECKSIG") must be (Some(OP_CHECKSIG)) CryptoOperation.fromString("OP_CHECKSIG") must be (Some(OP_CHECKSIG))
fromString("OP_HASH160") must be (Some(OP_HASH160)) CryptoOperation.fromString("OP_HASH160") must be (Some(OP_HASH160))
fromString("OP_SHA256") must be (Some(OP_SHA256)) CryptoOperation.fromString("OP_SHA256") must be (Some(OP_SHA256))
fromString("RANDOM") must be (None) CryptoOperation.fromString("RANDOM") must be (None)
} }
} }

View file

@ -8,14 +8,14 @@ import org.scalatest.{FlatSpec, MustMatchers}
class ReservedOperationsFactoryTest extends FlatSpec with MustMatchers { class ReservedOperationsFactoryTest extends FlatSpec with MustMatchers {
"ReservedOperationsFactory" must "instantiate reserved operations" in { "ReservedOperationsFactory" must "instantiate reserved operations" in {
ReservedOperationFactory.fromHex("50") must be (Some(OP_RESERVED)) ReservedOperation("50") must be (Some(OP_RESERVED))
ReservedOperationFactory.fromHex("62") must be (Some(OP_VER)) ReservedOperation("62") must be (Some(OP_VER))
} }
it must "find OP_NOP1 from its hex value" in { it must "find OP_NOP1 from its hex value" in {
ReservedOperationFactory.fromHex("b0") must be (Some(OP_NOP1)) ReservedOperation("b0") must be (Some(OP_NOP1))
} }
it must "find an undefined operation from its hex value" in { it must "find an undefined operation from its hex value" in {
ReservedOperationFactory.fromHex("ba").isDefined must be (true) ReservedOperation("ba").isDefined must be (true)
} }
} }

View file

@ -8,12 +8,12 @@ import org.scalatest.{MustMatchers, FlatSpec}
class SpliceOperationFactoryTest extends FlatSpec with MustMatchers { class SpliceOperationFactoryTest extends FlatSpec with MustMatchers {
"SpliceOperationFactory" must "instantiate the splice operations from hex" in { "SpliceOperationFactory" must "instantiate the splice operations from hex" in {
SpliceOperationsFactory.fromHex("7e") must be (Some(OP_CAT)) SpliceOperation("7e") must be (Some(OP_CAT))
SpliceOperationsFactory.fromHex("7f") must be (Some(OP_SUBSTR)) SpliceOperation("7f") must be (Some(OP_SUBSTR))
} }
it must "instantiate splice operations from their byte values" in { it must "instantiate splice operations from their byte values" in {
SpliceOperationsFactory.fromByte(126.toByte) must be (Some(OP_CAT)) SpliceOperation(126.toByte) must be (Some(OP_CAT))
SpliceOperationsFactory.fromByte(127.toByte) must be (Some(OP_SUBSTR)) SpliceOperation(127.toByte) must be (Some(OP_SUBSTR))
} }
} }