Skip to content

Instantly share code, notes, and snippets.

<cfscript>
s1 = "ABCDEF".mid(1,3)
s2 = "DEFABC".mid(4,6)
writeOutput(s1 & "<br>") // ABC
writeOutput(s2 & "<br>") // ABC
writeOutput("<br>")
writeOutput((s1 == s2) & "<br>") // true
writeOutput((s1 === s2) & "<br>") // true (FALSE ON LUCEE)
@adamcameron
adamcameron / AssertionsTest.cfc
Last active April 18, 2022 14:13
Tests for probable bug with notToThrow assertion.
import test.BaseSpec
component extends=BaseSpec {
function run() {
describe("Tests TestBox assertions", () => {
describe("Tests toThrow", () => {
it("should pass because it DOES throw an exception with the matching message", () => {
expect(() => throwExceptionWithMatchingMessage()).toThrow(regex="^.*MATCH_THIS.*$")
})
@adamcameron
adamcameron / luceeCfftpScopingBug.cfm
Created April 8, 2022 18:06
Demonstrates what seems to be a bug in how Lucee scopes the cfftp variable when in modern mode: it still goes in the variables scope.
<cfscript>
serverDetails = {
server="ftp.dlptest.com",
username="dlpuser",
password="rNrKYTX9g7z3RgJRmxWuGHbeu"
}
function usingClassicMode() localmode="classic" {
cfftp(connection="c1", action="open", attributeCollection=serverDetails)
cfftp(connection="c2", action="open", attributeCollection=serverDetails, result="c2ConnectionResult")
@adamcameron
adamcameron / CaptureStdOutTest.cfc
Created March 23, 2022 21:07
Example tests for Brad
import test.BaseSpec
component extends=BaseSpec {
function run() {
describe("Trying to capture stdout", () => {
var fixtures = {}
aroundEach((spec) => {
@adamcameron
adamcameron / BaseSpec.ccfc
Created March 17, 2022 13:48
TestBox request.testbox.debug fix
// CHANGES ONLY
component {
// ...
// Setup Request Utilities
if ( !request.keyExists( "testbox" ) ) {
request.testbox = {
"console" : variables.console,
"debug" : () => debugFixed(argumentCollection=arguments, thisContext=this), // FIXED
@adamcameron
adamcameron / Adam.cfc
Created March 17, 2022 08:12
Code for request.testBox fail
component {
request.testBox.debug("in pseudo constructor")
static {
request.testBox.debug("in static constructor")
}
function init() {
request.testBox.debug("in constructor")
@adamcameron
adamcameron / lifecycle_functions_spec.rb
Created March 5, 2022 17:07
Demonstrates the order in which lifecycle event handlers run in rspec
describe "Lifecycle function tests" do
test_array = []
before(:all) do
test_array.push "main block before :all handler"
end
before(:each) do # or just before with no param
test_array.push "main block before :each handler"
end
<cfscript>
function run() {
describe("email address tests", () => {
tests = [
{label="local too long (fails on CF)", expectation=false, address="#repeatString('x', 65)#@example.com"},
{label="domain too long (fails on CF)", expectation=false, address="x@#repeatString('x', 255)#.com"},
{label="embedded % should be fine (fails on both)", expectation=false, address="first%[email protected]"},
{label="domain format, length and overall length max (both pass)", expectation=true, address="x@x23456789ABCDEF-x23456789ABCDEF-x23456789ABCDEF-x23456789ABCDEF.x23456789ABCDEF-x23456789ABCDEF-x23456789ABCDEF-x23456789ABCDEF.x23456789ABCDEF-x23456789ABCDEF-x23456789ABCDEF-x23456789ABCDEF.x23456789ABCDEF-x23456789ABCDEF-x23456789ABCDEF-x2345678.com"},
{label="domain label length bad (first one 64 chars; max is 63) (fails on both)", expectation=false, address="x@XX23456789ABCDEF-x23456789ABCDEF-x23456789ABCDEF-x23456789ABCDEF.x23456789ABCDEF-x23456789ABCD
<cfscript>
uuid = replace(createUuid(), "-", "", "ALL");
result64 = baseMToBaseN(uuid, "HEX", "BASE62");
result36 = baseMToBaseN(uuid, "HEX", "BASE36");
uuidAgain = baseMToBaseN(result64, "BASE62", "HEX");
writeDump([uuid, result64, result64.len(), uuidAgain, result36, result36.len()]);
@adamcameron
adamcameron / C.cfc
Created January 5, 2022 18:24
Demonstrating behaviour variation when getCurrentTemplatePath is called from file included in CFC vs CFM
component {
include "m.cfm";
}